Sobes.tech
Junior — Middle

Как да реализираме използването на потребителски обекти като ключове при работа със словари?

sobes.tech AI

Отговор от AI

За да използвате персонализирани обекти като ключове в речници (например, в Swift Dictionary), тези обекти трябва да отговарят на протоколите Hashable и Equatable.

Това означава, че класът или структурата трябва да реализират методи за изчисляване на хеш-стойността и проверка за равенство на обектите.

Пример на Swift:

struct User: Hashable {
    let id: Int
    let name: String

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }

    static func == (lhs: User, rhs: User) -> Bool {
        return lhs.id == rhs.id
    }
}

var dict: [User: String] = [:]
let user1 = User(id: 1, name: "Alice")
dict[user1] = "Admin"

В този пример ключът на речника е обект User, който е уникално идентифициран по id. Реализацията на hash(into:) и == позволява правилно съхраняване и търсене на обекти в речника.