我是SwiftUI的新手,我正在尝试一些东西。 我有一个正在从数组中构建的列表。我想根据单击的行创建一个导航。因此,我使用以下内容构建了一个结构:
struct DiscoverItem: Hashable, Equatable {
var name: String
var destination: AnyView
}
let arr = [
DiscoverItem(name: "Catalogus", destination: AnyView(ProductList(products: []))),
DiscoverItem(name: "Locations", destination: AnyView(LocationList()))
]
但是Xcode在说什么
类型'DiscoverItem'不符合协议'平等'
我该如何解决?或者哪种方法才是正确的方法?
答案 0 :(得分:1)
这是由于AnyView
禁用了自动符合那些协议的原因(因为不符合它们)。
这是可能的解决方案:
struct DiscoverItem: Hashable, Equatable {
static func == (lhs: DiscoverItem, rhs: DiscoverItem) -> Bool {
lhs.id == rhs.id
}
func hash(into hasher: inout Hasher) {
hasher.combine(id)
hasher.combine(name)
}
let id = UUID()
var name: String
var destination: AnyView
}