Sobes.tech
Junior — Middle

Jak określić poprawny typ klucza do użycia w słowniku?

sobes.tech AI

Odpowiedź od AI

W iOS (Swift) klucz dla słownika musi spełniać protokół Hashable. Oznacza to, że klucz musi mieć możliwość obliczenia wartości hash i porównania go z innymi kluczami w celu sprawdzenia równości, aby słownik mógł efektywnie przechowywać i wyszukiwać wartości.

Na przykład, standardowe typy, takie jak String, Int, UUID, już implementują Hashable i nadają się do użycia jako klucze.

Jeśli tworzysz własny typ dla klucza, musisz zaimplementować protokół Hashable:

struct User: Hashable {
    let id: Int
    let name: String
}

var dict: [User: String] = [:]
dict[User(id: 1, name: "Alice")] = "Developer"

Zatem, prawidłowy typ klucza to taki, który:

  • implementuje Hashable;
  • ma unikalne wartości dla kluczy, aby uniknąć kolizji;
  • jest niezmienny (lepiej używać struktur lub właściwości niezmiennych).