Sobes.tech
Junior — Middle

Koje tipove objekata je dozvoljeno koristiti kao element-ključeve u kolekciji tipa Set?

sobes.tech АИ

Одговор од АИ

U kolekciji tipa Set na iOS-u (npr. NSSet ili Swift Set), elementi-ključevi mogu biti objekti koji ispunjavaju sledeće zahteve:

  • U Objective-C (NSSet): objekti moraju podržavati metode -hash i -isEqual: za ispravno poređenje i heširanje.
  • U Swift (Set): elementi moraju biti u skladu sa protokolom Hashable, tj. imati heš-vrednost i mogućnost poređenja na jednakost.

Ovo je neophodno da kolekcija može efikasno da čuva jedinstvene elemente i brzo izvršava operacije pretraživanja.

Primer u Swift-u:

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

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

Dakle, bilo koji objekat koji implementira Hashable (u Swift-u) ili metode hash i isEqual: (u Objective-C-u) može biti element seta.