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

9

你好,我遇到了一个关于确认协议“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]
}

这是我的ForEach代码:
List {
    ForEach(self.VM.dataSource, id: \.self) { item in
        Text(item.title).bold().font(.system(size: 22.0))\
    }
}

错误:

类型 'ExploreDataSource' 不符合协议 'Equatable'。您是否想要添加协议桩?类型 'ExploreDataSource' 不符合协议 'Hashable'


将id从.self更改为其他属性,这样就不需要使类型可哈希化。 - Aaban Tariq Murtaza
1个回答

11

你的 Page 结构体没有遵循 HashableEquatable,因此 ExploreDataSource 也不能遵循 Hashable

因此,我的建议是让你的 Page 结构体也遵循 Hashable

struct Page: Decodable, Identifiable, Hashable {
...
}

抱歉,我更新了我的问题,请修改您的答案。我会选择最好的。 - KitKit
1
@KitKit感谢您添加“Page”代码。我更新了我的答案,现在只需使“Page”符合“Hashable”就可以了。 - grahan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接