Junior — Middle
Czy można używać obiektu jako klucza w kolekcji Dictionary lub podobnej strukturze danych?
sobes.tech AI
Odpowiedź od AI
W iOS (Swift lub Objective-C) można używać obiektów jako kluczy w słownikach (Dictionary), ale obiekt musi spełniać określone wymagania.
W Swift klucze słownika muszą spełniać protokół Hashable, czyli obiekt musi mieć poprawnie zaimplementowane metody haszowania i porównania równości. Jest to konieczne, aby słownik mógł efektywnie przechowywać i wyszukiwać wartości po kluczach.
Przykład użycia własnego obiektu jako klucza:
struct Person: Hashable {
let id: Int
let name: String
}
var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"
Jeśli obiekt nie implementuje Hashable, nie można go używać jako klucza. W Objective-C klucze słownika muszą być obiektami, które implementują metody -hash i -isEqual:.
W związku z tym, można używać obiektów jako kluczy, jeśli poprawnie implementują haszowanie i porównanie.