Ios SwiftUI中的可选@ObserveObject

Ios SwiftUI中的可选@ObserveObject,ios,swift,swiftui,property-wrapper,Ios,Swift,Swiftui,Property Wrapper,我想在SwiftUI中有一个可选的@ObservedObject,但我一直得到一个编译时错误 属性类型“AModel”与其包装类型“ObservedObject”的“wrappedValue”属性的属性类型不匹配 下面是一些最小可复制代码 导入快捷界面 公共结构视图:视图{ //标记:视图模型 //此处抛出错误。 @观察对象var模型:AModel? //马克:身体 公共机构:一些看法{ 文本(“\(型号?.value±0)”) } //MARK:Init 公共init(){ } } 类AMo

我想在SwiftUI中有一个可选的@ObservedObject,但我一直得到一个编译时错误

属性类型“AModel”与其包装类型“ObservedObject”的“wrappedValue”属性的属性类型不匹配
下面是一些最小可复制代码

导入快捷界面
公共结构视图:视图{
//标记:视图模型
//此处抛出错误。
@观察对象var模型:AModel?
//马克:身体
公共机构:一些看法{
文本(“\(型号?.value±0)”)
}
//MARK:Init
公共init(){
}
}
类AModel:ObservieObject{
let值:Int=0
}

技术原因是
可选
不是一个类,因此它不能符合
可观察对象

但是,如果您想避免重构对象本身(例如,如果对象不在您的控制范围内),您可以这样做:

public struct AView: View {

    private struct Content: View {
       @ObservedObject var model: AModel
       var body: some View {
          Text("\(model.value)")
       }
    }

    var model: AModel?
    
    var body: some View {
       if let model = model {
          Content(model: model)
       } else {
          Text("0")
       }
    }    
}

为什么不在AModel中选择
,那才是更可行的事情!我目前正在以这种方式进行重构,但我仍然想知道为什么这似乎不起作用?我知道你想做什么,我猜你希望在自定义视图上有多个选项,无论你是否有模型(无),如果这是你想要的,我们可以用其他方式解决问题。
Optional
是枚举,而不是类,因此它不能符合
可观察对象