最佳答案
我想知道,目前(在问第一个 Xcode 12.0 Beta 时)是否有一种方法可以使用来自初始化器的参数来初始化 @StateObject
。
更具体地说,这段代码可以很好地工作:
struct MyView: View {
@StateObject var myObject = MyObject(id: 1)
}
但事实并非如此:
struct MyView: View {
@StateObject var myObject: MyObject
init(id: Int) {
self.myObject = MyObject(id: id)
}
}
根据我的理解,@StateObject
的作用是使视图成为对象的所有者。
我当前使用的解决方案是像下面这样传递已经初始化的 MyObject 实例:
struct MyView: View {
@ObservedObject var myObject: MyObject
init(myObject: MyObject) {
self.myObject = myObject
}
}
但是现在,据我所知,创建对象的视图拥有它,而这个视图不拥有它。
谢谢。