Matriz de objetos SwiftUI com AnyView
Sep 25 2020
Eu sou novo no SwiftUI e estou tentando algumas coisas. Eu tenho uma lista que está sendo construída a partir de uma matriz. Quero criar uma navegação dependendo da linha clicada. Então, eu construí uma estrutura com o seguinte:
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()))
]
No entanto, o Xcode está dizendo
O tipo 'DiscoverItem' não está em conformidade com o protocolo 'Equatable'
Como posso resolver isso ou de que forma é a correta?
Respostas
1 Asperi Sep 25 2020 at 00:26
É devido a AnyViewque desabilita a conformidade automática com esses protocolos (porque não os está em conformidade).
Aqui está uma solução possível:
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
}
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino