Не удается собрать вместе SwiftUI и обобщенные типы c для обработки базовых данных.
Рассмотрим следующий пример:
Parent
является абстрактным. Foo
и Bar
являются потомками Parent
, и у них есть некоторые пользовательские атрибуты.
Теперь я хочу примерно следующее:
protocol EntityWithView {
associatedtype T: View
func buildView() -> T
}
extension Parent: EntityWithView {
func buildView() -> some View {
fatalError("Re-implement in child")
}
}
extension Foo {
override func buildView() -> some View {
return Text(footribute)
}
}
extension Bar {
override func buildView() -> some View {
return Text(atrribar)
}
}
struct ViewThatUsesCoreDataAsModel: View {
let entities: [Parent]
var body: some View {
ForEach(entities) { entity in
entity.buildView()
}
}
}
Я бы хотел добавить polymorphi c builder к моим основным объектам данных, которые формируют данные или представления построения, которые подтверждают в общий интерфейс, так что я могу использовать их без приведения / ввода.
Проблема в том, что компилятор выдает ошибки, если я пытаюсь изменить сгенерированный объект данных Core напрямую, а не через расширение, и подтверждение протокола, хотя расширение не допускает переопределения.