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)