Sobes.tech
Junior — Middle

Aké typy objektov sú povolené ako prvky-kľúče v kolekcii typu Set?

sobes.tech AI

Odpoveď od AI

V kolekcii typu Set na iOS (napríklad NSSet alebo Swift Set) môžu byť kľúčové prvky objekty, ktoré spĺňajú nasledujúce požiadavky:

  • V Objective-C (NSSet): objekty musia podporovať metódy -hash a -isEqual: pre správne porovnanie a hashovanie.
  • V Swift (Set): prvky musia zodpovedať protokolu Hashable, teda mať hash hodnotu a možnosť porovnania na rovnosť.

Toto je nevyhnutné, aby kolekcia mohla efektívne uchovávať unikátne prvky a rýchlo vykonávať operácie vyhľadávania.

Príklad v Swift:

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

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

Takže akýkoľvek objekt, ktorý implementuje Hashable (v Swift) alebo metódy hash a isEqual: (v Objective-C), môže byť prvkom Setu.