Хи, я пытаюсь создать базовый класс, который выполняет определенные действия, повторяющиеся в приложении, но я столкнулся с проблемой, которую не могу понять, следующий код иллюстрирует то, что я пытаюсь построить:
protocol GenericSection { }
protocol GenericRow { }
protocol GenericModel {
var section: GenericSection { get }
var items: [GenericRow] { get }
}
protocol GenericVM {
var model: [GenericModel] { get set }
}
class ExampleVM: GenericVM {
enum Row: GenericRow {
case aRow
}
enum Section: GenericSection {
case aSection
}
struct Model: GenericModel {
let section: Section
let items: [Row]
}
var model: [Model] = []
}
Не компилируется, поскольку Model
не соответствует GenericModel
, а ExampleVM
не соответствует GenericVM
.
Способ решения этой проблемы - использование GenericRow
, GenericSection
и GenericModel
. Мой вопрос: почему я не могу использовать соответствующие Row
, Section
и Model
, соответствующие этим протоколам? .