Sobes.tech
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.