ObservedOptionalObject

Swift

原理

SwiftUI@ObservedObject 要求被观察的对象实际存在。在某些情况下,观察一个可能为 nil 的对象会很方便。在这种情况下,可以使用 @ObservedOptionalObject

struct SomeView: View {
    // Instead of
    @ObservedObject var anObject: Model? // Won't work
    
    // use
    @ObservedOptionalObject var anObject: Model?
    
    var body: some View {
        HStack {
            Text("Name")
            if let name = anObject?.name {
                Text(name)
            }
        }
    }
}

请注意,只有当您的内容即使在对象为 nil 时也应该显示时,@ObservedOptionalObject 才有用。否则,该视图应该包含在 if let 语句中:if let obj = obj { SomeView(anObject: obj) }

安装

此包可通过 SwiftPM 获取

dependencies: [
    .package(url: "https://github.com/fourplusone/observed-optional-object.git", 
        .upToNextMinor(from: "0.1.0")
    )
]

许可证

此项目采用 MIT 许可证。