包含AnyView的对象的SwiftUI数组
我是SwiftUI的新手,正在尝试一些东西。 我有一个列表,它是从一个数组中构建出来的。我想根据单击的行创建导航。因此,我用以下内容构建了一个结构:包含AnyView的对象的SwiftUI数组,swift,swiftui,Swift,Swiftui,我是SwiftUI的新手,正在尝试一些东西。 我有一个列表,它是从一个数组中构建出来的。我想根据单击的行创建导航。因此,我用以下内容构建了一个结构: struct DiscoverItem: Hashable, Equatable { var name: String var destination: AnyView } let arr = [ DiscoverItem(name: "Catalogus", destination: AnyView(
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”不符合协议“equalable”
我如何解决这个问题,或者哪种方法才是正确的解决方法?这是由于
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
}
工作得很有魅力!谢谢你能解释一下它到底是干什么的吗?@Stijn