gpt4 book ai didi

swift - 我们如何在 SwiftUI 中读取和写入同一个 ObservableObject?

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

我正在创建一个 ObservableObject 类,然后使用它在所有应用程序中读取和写入值。当我在 StateObject 和 ObservedObject 中使用 ObservableObject 时,它们不是相同的数据,但它们在内存中创建不同的变量,我们如何使 StateObjectObservedObject 处理相同的数据?

例如,我的 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()
}
}
}

最佳答案

how we can make StateObject and ObservedObject working on a same data?

您可以通过共享实例来实现,例如:

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
}

关于swift - 我们如何在 SwiftUI 中读取和写入同一个 ObservableObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64578731/

24 4 0
文章推荐: python - 如何在 df 中解压缩列表并在该列表上使用加法而不进行循环
文章推荐: c++ - 我的 C++ 代码中的错误在哪里?
文章推荐: python - django 搜索表单 UnboundLocalError at/
文章推荐: vue.js - 我如何使用 Vuelidate 来验证