I have down code which makes some Text in a ForEach loop, this loop use (id: .self) which is Int, but in this case our generated ( id = UUID() ) would ignored! And ForEach would work with some internal Int numbers! How we can force ForEach to take our built UUID as 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()
}
}
}