1 2 3 4 5 6 7 8 |
var body: some View { ZStack { ... } #if !os(iOS) /// -> Unexpected platform condition (expected 'os', 'arch', or 'swift') .focusable() #endif } |
Как же быть? Выход есть, его не может не быть! Чтобы не повторяться в коде, достаточно сделать небольшой хэлпер с помощью протокола ViewModifier, в примитивном виде он может быть таким:
1 2 3 4 5 6 7 8 9 10 |
struct FocusableView: ViewModifier { func body(content: Content) -> some View { #if os(iOS) return content #else return content .focusable() #endif } } |
Теперь ваш оригинальный код компонента не требуется дублировать или оборачивать в излишние проверки:
1 2 3 4 5 6 |
var body: some View { ZStack { ... } .modifier(FocusableView()) } |
Точно такой же подход я практикую со всеми другими модификаторами, доступными в зависимости от платформы. Легко и просто!