Sobes.tech
Junior — Middle

Μπορεί ένα αντικείμενο να χρησιμοποιηθεί ως κλειδί σε μια συλλογή Dictionary ή παρόμοια δομή δεδομένων;

sobes.tech AI

Απάντηση από AI

Στο iOS (Swift ή Objective-C), μπορείτε να χρησιμοποιήσετε αντικείμενα ως κλειδιά σε λεξικά (Dictionary), αλλά το αντικείμενο πρέπει να πληροί ορισμένες απαιτήσεις.

Στο Swift, τα κλειδιά του λεξικού πρέπει να συμμορφώνονται με το πρωτόκολλο Hashable, δηλαδή το αντικείμενο πρέπει να έχει σωστά υλοποιημένες μεθόδους κατακερματισμού και σύγκρισης ισότητας. Αυτό είναι απαραίτητο ώστε το λεξικό να μπορεί να αποθηκεύει και να αναζητά αποτελεσματικά τιμές βάσει των κλειδιών.

Παράδειγμα χρήσης ενός προσαρμοσμένου αντικειμένου ως κλειδί:

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

var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"

Εάν το αντικείμενο δεν υλοποιεί το Hashable, δεν μπορεί να χρησιμοποιηθεί ως κλειδί. Στο Objective-C, τα κλειδιά του λεξικού πρέπει να είναι αντικείμενα που υλοποιούν τις μεθόδους -hash και -isEqual:.

Επομένως, μπορούν να χρησιμοποιηθούν αντικείμενα ως κλειδιά εάν υλοποιούν σωστά το κατακερματισμό και τη σύγκριση.