Array objek SwiftUI dengan AnyView
Sep 25 2020
Saya baru mengenal SwiftUI dan saya sedang mencoba beberapa hal. Saya memiliki Daftar yang sedang dibangun dari Array. Saya ingin membuat Navigasi tergantung pada baris yang diklik. Jadi saya telah membangun struct dengan yang berikut:
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()))
]
Namun Xcode mengatakannya
Jenis 'DiscoverItem' tidak sesuai dengan protokol 'Equatable'
Bagaimana saya bisa mengatasi ini atau cara mana yang tepat untuk melakukan ini?
Jawaban
1 Asperi Sep 25 2020 at 00:26
Itu karena AnyViewyang menonaktifkan penyesuaian otomatis ke protokol tersebut (karena tidak sesuai dengan mereka).
Berikut adalah solusi yang mungkin:
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
}
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'