iOS Beta 5 SwiftUI列表重复了单个项目

问题描述

还有其他人在iOS 14 Beta 5中看到这个吗?在以前的测试版中效果很好...

    @State private var favorites = [Truck]()
    @State private var favoritesRetreived = false

    var body: some View {
        List {
            ForEach(favorites,id:\.id) { truck in
                NavigationLink (destination: TruckDetail(truck: truck)) {
                    TruckListItem(truck: truck)
                }
            }
        }
        .navigationBarTitle(Text("Favorites"),displayMode: .inline)
        .onAppear(perform: {
            getFavoriteTrucks()
        })
    }

在对getFavoriteTrucks的调用中,收藏夹中的数据已正确更新,但列表仅显示了为收藏夹重复的第一项。我知道在以前的Beta中它可以正常工作...我错过了某些更改吗?

解决方法

罗布·纳皮尔,你是对的。我在ForEach中使用的.id不是我应该使用的值。所有这些值均为“”,因此将生成重复项。谢谢!

,

检查您的 id 值。不需要在 ForEach 循环中提及它,但它在您的模型中应该是唯一的。

例如:

ForEach(list.datas) { 我在 打印(i.id) }

此 i.id 必须具有唯一值且不应为 nil 或空, 对我来说,它是一个空字符串。