Sobes.tech
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.