Sobes.tech
Junior — Middle

Milyen típusú objektumokat lehet kulcs-elemként használni egy Set típusú gyűjteményben?

sobes.tech MI

Válasz az MI-től

Az iOS-on lévő Set típusú gyűjteményben (például NSSet vagy Swift Set) a kulcs-elemként használható objektumoknak a következő követelményeknek kell megfelelniük:

  • Objective-C-ben (NSSet): az objektumoknak támogatniuk kell a -hash és -isEqual: metódusokat a helyes összehasonlítás és hash-elés érdekében.
  • Swift-ben (Set): az elemeknek meg kell felelniük a Hashable protokollnak, vagyis rendelkezniük kell egy hash értékkel és az egyenlőség szerinti összehasonlítás lehetőségével.

Ez szükséges ahhoz, hogy a gyűjtemény hatékonyan tárolhassa az egyedi elemeket és gyors keresési műveleteket hajthasson végre.

Swift példával:

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

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

Így bármely Hashable-t megvalósító (Swift-ben) vagy hash és isEqual: metódusokat tartalmazó (Objective-C-ben) objektum lehet a Set eleme.