如何避免致命错误:SwiftUI中没有类型为...的ObservableObject?

时间:2020-04-03 21:23:41

标签: swiftui observableobject environmentobject

我将内容简化为这个非常简单的示例(一个普通的SwiftUI项目,仅编辑ContentView和SceneDelegate中的一行)。为屏幕设置一个普通的ObservableObject和几个View。使用最新的Xcode 11.4,模拟器很容易崩溃。

import SwiftUI

// NB In SceneDelegate added: let contentView = ContentView().environmentObject(EO())
class EO: ObservableObject {
    @Published var n = 2
}

struct ContentView: View {
    @EnvironmentObject var eo: EO

    var body: some View {
        NavigationView {
            VStack {
                Text("A: \(eo.n)")
                NavigationLink(destination: ContentViewB()) {
                    Text("Go to B")
                }
            }
        }
    }
}

struct ContentViewB: View {
    @EnvironmentObject var eo: EO
    var body: some View {
        VStack {
            Text("B: \(eo.n)")
        }.onAppear {
            self.eo.n += 1
        }
    }
}

我做错什么了吗?还是这是一个SwiftUI错误?最初似乎运行良好,然后重新导航到子视图时它崩溃了。尽管确切的行为是不确定的(第二或第三导航可能会崩溃!)

0 个答案:

没有答案