同项 SwiftUI 列表
Posted
技术标签:
【中文标题】同项 SwiftUI 列表【英文标题】:Same item SwiftUI List 【发布时间】:2020-08-02 00:41:36 【问题描述】:我创建了一个包含 Order 和 CartProduct 实体的核心数据应用程序。 Order 与 CartProduct 是一对多的关系,反之亦然。
我将产品添加到订单中,但有一个页面我想显示产品但看起来只显示最后一个产品。
@FetchRequest(
entity: Order.entity(),
sortDescriptors: [],
predicate:NSPredicate(format: "status == %@", "ongoing")
) var orders: FetchedResults<Order>
func printProducts()
let array = orders[0].products!.array as! [CartProduct]
for product in array
print("\(product.quantity) - \(product.name!)")
var body: some View
if(!orders.isEmpty)
List(orders[0].products!.array as! [CartProduct])product in
Text("\(product.quantity) * \(product.name!)")
.onAppear(perform: printProducts)
在 printProducts 中打印所有产品的正确数量,但在列表中,只有第一个产品的数量和名称重复(产品数量正确)。
你对此有什么想法吗?
【问题讨论】:
【参考方案1】:通过将id
添加到列表中解决了这个问题。
@FetchRequest(
entity: Order.entity(),
sortDescriptors: [],
predicate:NSPredicate(format: "status == %@", "ongoing")
) var orders: FetchedResults<Order>
func printProducts()
let array = orders[0].products!.array as! [CartProduct]
for product in array
print("\(product.quantity) - \(product.name!)")
var body: some View
if(!orders.isEmpty)
List(orders[0].products!.array as! [CartProduct], id: \.self)product in
Text("\(product.quantity) * \(product.name!)")
.onAppear(perform: printProducts)
【讨论】:
以上是关于同项 SwiftUI 列表的主要内容,如果未能解决你的问题,请参考以下文章