我不知道如何用SwiftUI在struct中编写ForEach。
struct Group: Identifiable,Decodable{
@DocumentID var id: String?
var name: String
var members: [[String:String]]
}
我想用ForEach
来显示成员数组。
@ObservedObject var groupVM: GroupViewModel
var body: some View {
NavigationView {
List{
ScrollView{
LazyVStack(alignment: .leading){
ForEach(groupVM.group.members){ member in
groupMemberCell()
}
}
}
}
}
}
我得到了这个错误Referencing initializer 'init(_:content:)' on 'ForEach' requires that '[String : String]' conform to 'Identifiable'
。
请告诉我怎样写正确的方法。
这是因为members
(类型为[[String: String]]
)的值不会自动与Identifiable
一致。
这取决于你的模型如何识别每个单独的成员(数据[String: String]
),因为从这个字典中不清楚你将如何做到这一点(字典是每个成员的一堆键和值,所以我们如何知道哪个成员是哪个基于这个数据?)。
我建议将每个成员建模为自己的对象,并包含一个允许您唯一标识每个成员的字段(例如为每个成员设置id
,例如,这可能是应用程序中的用户id)。
struct Member: Identifiable, Decodable {
var id: String
var data: [String: String]
}
你的组看起来像:
struct Group: Identifiable, Decodable {
@DocumentID var id: String?
var name: String
var members: [Member]
}