gpt4 book ai didi

swift - Xcode 不会让我在可选的上使用 `@ObservedObject`

转载 作者:行者123 更新时间:2023-12-04 02:25:15 24 4
gpt4 key购买 nike

我有一个 ObservableObject类叫 MyObjectModel传递给这样的结构:

var body: some View {
MyView(myObjectModel)
但是在另一个上下文中,我没有要传递的模型,因此我想调用 MyView简单来说
var body: some View {
MyView()
所以我想我可以初始化 MyView喜欢
struct MyView: View {

@ObservedObject private var model: MyObjectModel?

init(model: MyObjectModel? = nil) {
self.model = model
}
但是 Xcode 不会让我使用 @ObservedObject在一个可选的。
我怎么做?

最佳答案

ObservedObject包装器目前没有可选的构造函数(我们不能扩展 Optional 以符合 ObservableObject ,因为它不是一个类)。
一种可能的方法是有一些特定的标记,表明没有模型,因为它为零。
这是一个演示:

class MyObjectModel: ObservableObject {
static let None = MyObjectModel() // Like NSNull.null
}

struct MyView: View {

@ObservedObject private var model: MyObjectModel

init(model: MyObjectModel? = nil) {
self.model = model ?? MyObjectModel.None
}

var body: some View {
if self.model === MyObjectModel.None {
Text("Same as it would be nil!") // << here !!
} else {
Text("For real model")
}
}
}

关于swift - Xcode 不会让我在可选的上使用 `@ObservedObject`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68273181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com