Dictionary 如何让SwiftUI检测字典的更改?

Dictionary 如何让SwiftUI检测字典的更改?,dictionary,swiftui,Dictionary,Swiftui,如何让SwiftUI在字典中的值发生更改时进行检测 class DictModel: ObservableObject { @Published var dict: [String: [String: Int]] = [:] } 快捷代码 struct TestPublishedDidSet: View { @ObservedObject var vm = DictModel() var body: some View { VStack {

如何让SwiftUI在字典中的值发生更改时进行检测

class DictModel: ObservableObject {
    @Published var dict: [String: [String: Int]] = [:]
}
快捷代码

struct TestPublishedDidSet: View {
    @ObservedObject var vm = DictModel()

    var body: some View {
        VStack {
            Button("Assign") { self.vm.dict = ["Key1": ["Some value": 1]] }
            Button("Modify") { self.vm.dict["Key2"] = ["Some new value": 2] }
            Divider()
           ForEach(Array(self.vm.dict.keys), id: \.self) { key in
              VStack {
                 Text("\(key)")
                 ForEach(Array(self.vm.dict[key].keys), id: \.self) { key in
                    Text("\(key): \(self.vm.dict[key][key])")
                 }
              }
           }
        }
    }
}
我假设可能需要创建一个自定义字典类,在添加或更改任何键值时发送和更新()消息。你知道怎么做吗。 请注意,更新是由后台线程使用
DispatchQueue.main.async{}
调用执行的

编辑:
-这确实有效-我一定是做错了其他事情。

以下示例对这两种用例都有效,更新UI:分配和修改

使用Xcode 11.4/iOS 13.4进行测试

class DictModel: ObservableObject {
    @Published var dict: [String: String] = [:]
}

struct TestPublishedDidSet: View {
    @ObservedObject var vm = DictModel()

    var body: some View {
        VStack {
            Button("Assign") { self.vm.dict = ["Key1": "Some value"] }
            Button("Modify") { self.vm.dict["Key2"] = "Some new value" }
            Divider()
           ForEach(Array(self.vm.dict.keys), id: \.self) { key in
              Text("\(self.vm.dict[key]!)...")
           }
        }
    }
}

@Jessy-该值是一个字典,但出于说明目的,上面的代码仅使用字符串值。我刚刚将示例修改为[String:String],我将再看一看是否有什么地方我做错了。我的更新是由后台线程使用DispatchQueue.main.async{}调用触发的。问题相同,但已修复。我忘了在主线上接水槽
.receive(在:DispatchQueue.main上)