Swift 嵌套列表不';当项目更改时,不更新项目标签
我在SwiftUI中有一个嵌套的Swift 嵌套列表不';当项目更改时,不更新项目标签,swift,swiftui,Swift,Swiftui,我在SwiftUI中有一个嵌套的类别及其产品。如果我点击一个产品,编辑其名称并返回列表,则名称不会更新。产品列表来自@FetchRequest上的一个计算属性,而不是直接来自@FetchRequest,我感觉我缺少了一个包装器或什么东西 如果我添加了一个新产品,那么列表就会更新,因为这会通知@FetchRequest某些内容发生了变化,我的计算属性缺少了这个“魔力” 我的类别 我的名单 制作一个具有@ObservedObject var product:product的LabelView(pro
类别
及其产品
。如果我点击一个产品
,编辑其名称并返回列表,则名称不会更新。产品列表来自@FetchRequest
上的一个计算属性,而不是直接来自@FetchRequest
,我感觉我缺少了一个包装器或什么东西
如果我添加了一个新产品,那么列表就会更新,因为这会通知@FetchRequest
某些内容发生了变化,我的计算属性缺少了这个“魔力”
我的类别
我的名单
制作一个具有
@ObservedObject var product:product
的LabelView(product:product)
,这样您就可以观察到更改。假设Product
是一个CoreData对象或ObsevervableObject
这个类别。sortedProducts
应该是存储属性,而不是可计算的,因此view可以观察到它并相应地更新view。但它是一个动态关系,需要从核心数据而不是存储属性中获取,如何解决此问题?制作一个具有@ObservedObject var product:product
的LabelView(product:product)
,这样您就可以观察到更改。假设产品
是一个CoreData对象或ObsevervableObject
@loremipsum有效,非常感谢!如果你把它作为答案贴出来,我会接受的。
extension Category {
@NSManaged public var name: String?
@NSManaged public var products: NSSet?
var sortedProducts: [Product] {
return self.products.allObjects.sorted({ $0.name > $1.name })
}
}
List {
ForEach(categories) { category in
Section(header: Text(category.name)) {
ForEach(category.sortedProducts, id: \.self) { product in
NavigationLink(
destination: ProductFormView(edit: product),
label: {
Text(product.name)
})
}
}
}
}