Sobes.tech
Junior — Middle

Jakie typy obiektów można używać jako elementy-klucze w kolekcji typu Set?

sobes.tech AI

Odpowiedź od AI

W kolekcji typu Set na iOS (np. NSSet lub Swift Set) elementami-kluczami mogą być obiekty spełniające następujące wymagania:

  • W Objective-C (NSSet): obiekty muszą obsługiwać metody -hash i -isEqual: dla poprawnego porównania i haszowania.
  • W Swift (Set): elementy muszą spełniać protokół Hashable, czyli mieć wartość hash i możliwość porównania na równość.

Jest to konieczne, aby kolekcja mogła efektywnie przechowywać unikalne elementy i szybko wykonywać operacje wyszukiwania.

Przykład w Swift:

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

var peopleSet = Set<Person>()
peopleSet.insert(Person(id: 1, name: "Иван"))

W związku z tym, dowolne obiekty implementujące Hashable (w Swift) lub metody hash i isEqual: (w Objective-C) mogą być elementami Set.