Sobes.tech
Junior — Middle

¿Cómo se puede implementar un mecanismo de caché de forma independiente sin recurrir a bibliotecas externas?

sobes.tech AI

Respuesta de la IA

Para implementar un mecanismo de caché simple en iOS sin bibliotecas de terceros, puedes usar un diccionario (Dictionary) para almacenar datos con claves y valores, además de agregar lógica para gestionar la vida útil de la caché.

Ejemplo en Swift:

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

    init(defaultExpiry: TimeInterval = 300) { // 5 minutos por defecto
        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()
    }
}

Este clase permite guardar objetos con claves, eliminar automáticamente datos caducados y gestionar la caché manualmente.