Назад к вопросам
Junior — Middle
73
Что необходимо обеспечить для использования объекта класса в качестве ключа в словаре?
Ответ от нейросети
sobes.tech AI
Чтобы использовать объект класса в качестве ключа в словаре (например, в Swift Dictionary или NSDictionary), необходимо обеспечить:
-
Хешируемость — объект должен иметь корректно реализованный метод вычисления хеша (
hashв Swift,hashValueв Objective-C), чтобы словарь мог быстро находить ключ. -
Сравнимость на равенство — объект должен корректно реализовывать метод сравнения (
Equatableв Swift,isEqual:в Objective-C), чтобы словарь мог определить, что два ключа равны.
В Swift это означает, что класс должен соответствовать протоколам Hashable и Equatable. Например:
class Person: Hashable {
var id: Int
var name: String
init(id: Int, name: String) {
self.id = id
self.name = name
}
static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.id == rhs.id
}
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
}
var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"
Без корректной реализации этих методов объект не сможет быть ключом в словаре.