在SwiftUI中使用列表时,如果遇到错误"Initializer 'init(_:id:rowContent:)'要求'(String, String)'符合'Hashable'",这是因为在列表中使用了自定义的数据类型,而该数据类型没有遵循Hashable协议。
要解决这个错误,可以按照以下步骤进行操作:
struct MyDataType: Hashable {
var property1: String
var property2: String
func hash(into hasher: inout Hasher) {
hasher.combine(property1)
hasher.combine(property2)
}
static func ==(lhs: MyDataType, rhs: MyDataType) -> Bool {
return lhs.property1 == rhs.property1 && lhs.property2 == rhs.property2
}
}
struct ContentView: View {
var data: [MyDataType] = [
MyDataType(property1: "Value 1", property2: "Value 2"),
MyDataType(property1: "Value 3", property2: "Value 4")
]
var body: some View {
List(data, id: \.self) { item in
Text(item.property1)
Text(item.property2)
}
}
}
在上述代码中,我们将自定义数据类型MyDataType的实例作为列表的数据源,并使用.id(.self)来指定列表中每个元素的唯一标识符。
这样,当我们在SwiftUI中使用列表时,就不会再遇到"Initializer 'init(_:id:rowContent:)'要求'(String, String)'符合'Hashable'"的错误了。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云