0

我有一个问题,即主窗格列表视图行在 iPad 中没有正确更新。出于描述目的,我已将代码缩减为

struct CarsList : View {
    @State var isPresented = false
    @FetchRequest(fetchRequest: Car.allCarsFetchRequest())
    var cars: FetchedResults<Car>
    var body: some View {
        NavigationView {
            List {
                Button("Add Car") {
                    self.isPresented.toggle()
                }
                ForEach (self.cars) { car in
                    VStack {
                        Text ("List Car name: \(car.name!)")
                        NavigationLink(destination: CarDetailView(carVM: CarViewModel(car: car)) )  {
                            CarRowView(car: car)
                        }
                    }
                }
            }
        }
        .sheet(isPresented: $isPresented, onDismiss: { }, content: {
            CarDetailView(carVM: CarViewModel())
        })
    }
}

iPad 左侧窗格显示汽车名称列表(CoreData 托管对象)。出于测试目的,我在 Text(“List car name...”) 中显示了两次名称,然后在 CarRowView 中再次显示了名称。CarRowView 有 car: Car 声明为 ObservedObject。我可以点击一行,进入详细视图,我可以在其中更改汽车名称。当我这样做时,列表会更新为 Text(“List car name...”) 显示新名称,但 CarRowView 不会更改。因此,更改详细信息窗格中的“汽车”,立即显示在列表中(在 Text("List car name..") 中),但即使该汽车对象被发送到 CarRowView,它是一个 ObservedObject,CarRowView显示不变。该应用程序使用 CloudKit,在我进行更改后,新名称在运行相同代码的 iPhone(在 CarRowView 中)上显示正常。

4

1 回答 1

1

看起来这是一个 SwiftUI 错误,而不是代码问题,因为它现在适用于 13.3。

于 2019-11-22T12:12:06.313 回答