ForEach 要求"[字符串:字符串]"符合"可识别"



我不知道如何用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]
}

最新更新