gpt4 book ai didi

swift - 在 SwiftUI 中使用参数初始化 @StateObject

转载 作者:行者123 更新时间:2023-12-03 09:15:40 25 4
gpt4 key购买 nike

我想知道目前(在询问时,第一个 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的作用是使 View 成为对象的所有者。
我使用的当前解决方法是传递已经初始化的 MyObject 实例,如下所示:
struct MyView: View {
@ObservedObject var myObject: MyObject

init(myObject: MyObject) {
self.myObject = myObject
}
}
但是现在,据我所知,创建对象的 View 拥有它,而这个 View 没有。
谢谢。

最佳答案

这是解决方案的演示。使用 Xcode 12b 测试。

class MyObject: ObservableObject {
@Published var id: Int
init(id: Int) {
self.id = id
}
}

struct MyView: View {
@StateObject private var object: MyObject
init(id: Int = 1) {
_object = StateObject(wrappedValue: MyObject(id: id))
}

var body: some View {
Text("Test: \(object.id)")
}
}

关于swift - 在 SwiftUI 中使用参数初始化 @StateObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62635914/

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