如何使用符合“Hashable”协议的 ForEach

Kit*_*Kit 9 swift swiftui

您好,我有一个关于确认协议“Hashable”的问题。实在是太烂了。这是我的模型:

struct Page: Decodable, Identifiable {
    var id: String
    var name: String
    var thumbnail: String?
    var description: String
    var type: String
    var speechs: [String]
}

struct ExploreDataSource: Decodable, Hashable {   
    var title: String
    var data: [Page]
}
Run Code Online (Sandbox Code Playgroud)

这是我的ForEach代码:

List {
    ForEach(self.VM.dataSource, id: \.self) { item in
        Text(item.title).bold().font(.system(size: 22.0))\
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:

类型“ExploreDataSource”不符合协议“Equatable”。您想添加协议存根吗?类型“ExploreDataSource”不符合协议“Hashable”

gra*_*han 11

您的Page结构不符合Hashable各自Equatable,因此ExploreDataSource不能符合其中Hashable任何一个。

所以我的建议是让你也Page遵守。Hashable

struct Page: Decodable, Identifiable, Hashable {
...
}
Run Code Online (Sandbox Code Playgroud)