Sobes.tech
Junior — Middle

Jaké typy objektů jsou povoleny jako klíčové prvky v kolekci typu Set?

sobes.tech AI

Odpověď od AI

V kolekci typu Set na iOS (například NSSet nebo Swift Set) mohou být klíčové prvky objekty, které splňují následující požadavky:

  • V Objective-C (NSSet): objekty musí podporovat metody -hash a -isEqual: pro správné porovnání a hashování.
  • V Swift (Set): prvky musí odpovídat protokolu Hashable, tj. mít hodnotu hash a možnost porovnání na rovnost.

To je nutné, aby kolekce mohla efektivně uchovávat unikátní prvky a rychle provádět operace vyhledávání.

Příklad ve Swift:

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

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

Tedy jakýkoli objekt, který implementuje Hashable (ve Swift) nebo metody hash a isEqual: (v Objective-C), může být prvkem Setu.