Sobes.tech
Middle

¿Cómo se puede implementar el almacenamiento en caché de datos utilizando solo herramientas propias, sin usar bibliotecas de terceros?

sobes.tech AI

Respuesta de la IA

Usando URLCache para solicitudes HTTP/HTTPS, FileManager para almacenamiento en caché de archivos y UserDefaults para datos pequeños y simples.

// Ejemplo con URLCache
let configuration = URLSessionConfiguration.default
configuration.requestCachePolicy = .reloadIgnoringLocalCacheData // Política de ejemplo
let session = URLSession(configuration: configuration)

let url = URL(string: "https://example.com/api/data")!
let task = session.dataTask(with: url) { data, response, error in
    // Procesamiento de datos
}
task.resume()
// Ejemplo con FileManager (almacenamiento en caché de datos en un archivo)
let fileManager = FileManager.default
let cacheDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first!
let fileURL = cacheDirectory.appendingPathComponent("cached_data.txt")

// Escribir datos
let dataToCache = "Some cached data".data(using: .utf8)!
do {
    try dataToCache.write(to: fileURL)
} catch {
    print("Error al escribir en el archivo: \(error)")
}

// Leer datos
do {
    let cachedData = try Data(contentsOf: fileURL)
    let cachedString = String(data: cachedData, encoding: .utf8)
    print("Datos en caché: \(cachedString ?? "nil")")
} catch {
    print("Error al leer el archivo: \(error)")
}
// Ejemplo con UserDefaults (almacenamiento en caché de datos simples)
let defaults = UserDefaults.standard

// Escribir datos
defaults.set("cached_value", forKey: "myCachedKey")

// Leer datos
let cachedValue = defaults.string(forKey: "myCachedKey")
print("Valor en caché desde UserDefaults: \(cachedValue ?? "nil")")