Swift 将@ObservedObject作为协议传递给嵌套视图
我最好用一个小例子来解释这个问题:Swift 将@ObservedObject作为协议传递给嵌套视图,swift,swiftui,Swift,Swiftui,我最好用一个小例子来解释这个问题: struct Person:可识别{ 变量id:Int 变量名称:String } 类别公司:ObservieObject{ @已发布的var员工=[人]() func hire(个人:个人){} } 礼宾雇主{ func hire(人:人) } 扩展公司:雇主{} 结构公司视图:视图{ @观察对象var公司:公司 var body:一些观点{ 名单(公司雇员){公司雇员 PersonView(个人:雇员,雇主:self.company) } } } stru
struct Person:可识别{
变量id:Int
变量名称:String
}
类别公司:ObservieObject{
@已发布的var员工=[人]()
func hire(个人:个人){}
}
礼宾雇主{
func hire(人:人)
}
扩展公司:雇主{}
结构公司视图:视图{
@观察对象var公司:公司
var body:一些观点{
名单(公司雇员){公司雇员
PersonView(个人:雇员,雇主:self.company)
}
}
}
struct PersonView:View{
个人:个人
雇主:雇主
var body:一些观点{
文本(person.name)
}
}
上面的代码没有生成,它给出了隐晦的错误消息(可能是因为涉及到闭包):
现在,如果出现以下情况之一,错误就会消失:
- 我删除了
包装器-不可行,因为我需要观察更改@ObservedObject
- 或者我更改
以要求具体类别:PersonView
——但这违反了接口隔离原则var雇主:公司
- 或者我在实例化时添加一个额外的
:.self
PersonView(个人:雇员,雇主:self.company.self)
.self
,这让人感到奇怪
有更好的解决方案吗?通过添加
作为雇主来明确类型,并通过Apple反馈打开关于此的增强请求(我认为这不一定是一个快速的问题;我怀疑这与ObservedObject有关)
PersonView(person: employee, employer: self.company as Employer)