Как объявить конкретный протокол в структуре в Swift?

#swift #swiftui

#swift #swiftui

Вопрос:

Я пытаюсь создать структуру в Swift:

 struct foo: Identifiable {
    var id = UUID()
    var someView: View
}
  

Здесь someView — это любая структура представления SwiftUI. Но Xcode вызовет ошибку

Протокол ‘View’ может использоваться только как общее ограничение, поскольку он имеет собственные или связанные требования к типу

Как объявить свойство, которое соответствует определенному протоколу в Swift?

Комментарии:

1. Вы можете использовать AnyView вместо View

2. Зачем вам нужна такая структура? Какова ваша цель ?

Ответ №1:

Вы можете использовать дженерики, если это работает для вас:

 struct Foo<T: View>: Identifiable {
    var id = UUID()
    var someView: T
}