Как я могу заставить SwiftUI определять, когда значения в Словаре меняются?
class DictModel: ObservableObject {
@Published var dict: [String: [String: Int]] = [:]
}
Код SwiftUI
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{}
.
РЕДАКТИРОВАТЬ: - это действительно работает - я, должно быть, делал что-то еще неправильно.