Junior — Middle
Πώς μπορεί κανείς να υλοποιήσει αυτόνομα έναν μηχανισμό cache χωρίς τη χρήση εξωτερικών βιβλιοθηκών;
sobes.tech AI
Απάντηση από AI
Για την υλοποίηση ενός απλού μηχανισμού cache στο iOS χωρίς βιβλιοθήκες τρίτων, μπορείτε να χρησιμοποιήσετε ένα λεξικό (Dictionary) για την αποθήκευση δεδομένων με κλειδιά και τιμές, καθώς και να προσθέσετε λογική για τη διαχείριση του χρόνου ζωής της cache.
Παράδειγμα σε Swift:
class SimpleCache<Key: Hashable, Value> {
private var cache = [Key: (value: Value, expiry: Date?)]()
private let defaultExpiry: TimeInterval
init(defaultExpiry: TimeInterval = 300) { // 5 λεπτά προεπιλογή
self.defaultExpiry = defaultExpiry
}
func set(_ value: Value, for key: Key, expiry: TimeInterval? = nil) {
let expiryDate = expiry != nil ? Date().addingTimeInterval(expiry!) : Date().addingTimeInterval(defaultExpiry)
cache[key] = (value, expiryDate)
}
func get(_ key: Key) -> Value? {
guard let entry = cache[key] else { return nil }
if let expiry = entry.expiry, expiry < Date() {
cache.removeValue(forKey: key)
return nil
}
return entry.value
}
func remove(_ key: Key) {
cache.removeValue(forKey: key)
}
func clear() {
cache.removeAll()
}
}
Αυτή η κλάση επιτρέπει την αποθήκευση αντικειμένων με κλειδιά, την αυτόματη διαγραφή ληγμένων δεδομένων και τη χειροκίνητη διαχείριση της cache.