Μπορεί ένα αντικείμενο να χρησιμοποιηθεί ως κλειδί σε μια συλλογή 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:.
Επομένως, μπορούν να χρησιμοποιηθούν αντικείμενα ως κλειδιά εάν υλοποιούν σωστά το κατακερματισμό και τη σύγκριση.