我从SwiftUI开始,遇到了一个ObservableObject
数组项未保存到主对象的障碍。
主要对象:
class Batch: Codable, Identifiable, ObservableObject {
let id: String
var items = [Item]()
}
项目对象:
class Item: Codable, Identifiable, ObservableObject {
let id: String
var description: String
}
我有一个BatchView
,我将其中的一批传递给了
struct BatchView: View {
@ObservedObject var batch: Batch
var body: some View {
List {
ForEach(batch.items) { item in
ItemView(item: item)
}
}
.navigationBarTitle(batch.items.reduce("", { $0 + $1.description }))
}
}
在ItemView
中,我更改了说明:
struct ItemView: View {
@ObservedObject var item: Item
@State private var descr = ""
var body: some View {
VStack(alignment: .leading) {
Text("MANUFACTURED")
TextField("", text: $descr) {
self.updateDescr(descr: self.descr)
}
}
}
private func updateDescr(descr: String) {
item.description = descr
}
}
但是当我更新批处理项目的描述时,BatchView
的标题不会更改,因此对Item
的更改不会返回到根Batch
我如何进行上述工作?