Sobes.tech
Junior — Middle

Come implementare un meccanismo di caching in modo autonomo senza ricorrere a librerie di terze parti?

sobes.tech AI

Risposta dell'AI

Per implementare un meccanismo di cache semplice su iOS senza librerie di terze parti, puoi usare un dizionario (Dictionary) per memorizzare dati con chiavi e valori, e aggiungere logica per gestire la durata della cache.

Esempio in Swift:

class SimpleCache<Key: Hashable, Value> {
    private var cache = [Key: (value: Value, expiry: Date?)]()
    private let defaultExpiry: TimeInterval

    init(defaultExpiry: TimeInterval = 300) { // 5 minuti di default
        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()
    }
}

Questa classe permette di salvare oggetti con chiavi, rimuovere automaticamente i dati scaduti e gestire manualmente la cache.