Тот же элемент SwiftUI List - PullRequest
       24

Тот же элемент SwiftUI List

0 голосов
/ 02 августа 2020

Я создал приложение Core Data, которое содержит сущности Order и CartProduct. Заказ имеет отношение "один ко многим" с 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 Ответ

0 голосов
/ 07 августа 2020

Это было решено добавлением 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) 
        }
}
...