首页 > 解决方案 > 如何使用 ForEach 符合协议'Hashable'

问题描述

你好我有一个关于确认协议'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”

标签: swiftswiftui

解决方案


您的Page结构Hashable分别不符合Equatable,因此ExploreDataSource不能符合Hashable任何一个。

所以我的建议是让你也Page符合Hashable

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

推荐阅读