我正在上一ObservableObject
堂课,然后在所有应用程序中使用它来读写价值。当我ObservableObject
在StateObject和ObservedObject中使用我的数据时,它们不是相同的数据,但是它们在内存中创建了不同的变量,我们如何制作StateObject
和ObservedObject
处理相同的数据?
例如,我的ObservableObject类有一个名为的变量stringOfText
,默认情况下,No Data!
我将创建一个StateObject变量并开始读取默认值stringOfText
,然后更改stringOfText的默认值,并且它不显示更新ObservedObject
!我做错了什么?
class TextModel: ObservableObject {
@Published var stringOfText: String = "No Data!"
}
struct ContentView: View {
@ObservedObject var readStringOfTextView = TextModel()
var body: some View {
TextView()
Text(readStringOfTextView.stringOfText)
.foregroundColor(Color.black)
}
}
struct TextView: View {
@StateObject var textModel = TextModel()
var body: some View {
Text(textModel.stringOfText)
.padding()
.foregroundColor(Color.red)
Button(action: {
textModel.stringOfText = "Hello, world!"
}) {
Text("update string of Text")
.padding()
}
}
}
如何使StateObject和ObservedObject处理同一数据?
您可以通过共享实例来实现它,例如:
class TextModel: ObservableObject {
static let shared = TextModel() // << here !!
@Published var stringOfText: String = "No Data!"
}
struct ContentView: View {
@ObservedObject var readStringOfTextView = TextModel.shared // << here !!
// ... other code
}
struct TextView: View {
@StateObject var textModel = TextModel.shared // << here !!
// ... other code
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句