我们如何强制ForEach使用UUID而不是(id:\.self)



我有一个向下的代码,它在ForEach循环中生成一些Text,这个循环使用(id:.self(,它是Int,但在这种情况下,我们生成的(id=UUID(((将被忽略!ForEach可以处理一些内部Int数!我们如何强制ForEach将我们构建的UUID作为id?

struct Data: Identifiable
{
let id  = UUID()
var name: String
}
let Data1 = Data(name: "Data 1")
let Data2 = Data(name: "Data 2")
let Data3 = Data(name: "Data 3")
let Data4 = Data(name: "Data 4")
class DataModel: ObservableObject
{
@Published var items: [Data] = [Data1, Data2, Data3, Data4]
}

struct ContentView: View
{

@StateObject var dataModel = DataModel()

var body: some View
{

ForEach(dataModel.items.indices, id: .self) { index in // ← Here: I want UUID 

Text(dataModel.items[index].name)
.font(.title2)
.padding()


}
}
}

您可以使用zip,如SwiftUI中如何将.enumered((与ForEach一起使用?

ForEach(Array(zip(dataModel.items.indices, dataModel.items)), id: .1) { index, item in
// index and item are both safe to use here
}

你可以试试这个:

ForEach(dataModel.items.map{ $0.id }, id: .self) { uuid in // ← Here: I want UUID

最新更新