Middle
Comment peut-on implémenter la mise en cache des données en utilisant uniquement ses propres outils, sans recourir à des bibliothèques tierces?
sobes.tech IA
Réponse de l'IA
Utilisation de URLCache pour les requêtes HTTP/HTTPS, FileManager pour la mise en cache de fichiers et UserDefaults pour les petites données simples.
// Exemple avec URLCache
let configuration = URLSessionConfiguration.default
configuration.requestCachePolicy = .reloadIgnoringLocalCacheData // Politique d'exemple
let session = URLSession(configuration: configuration)
let url = URL(string: "https://example.com/api/data")!
let task = session.dataTask(with: url) { data, response, error in
// Traitement des données
}
task.resume()
// Exemple avec FileManager (mise en cache de données dans un fichier)
let fileManager = FileManager.default
let cacheDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first!
let fileURL = cacheDirectory.appendingPathComponent("cached_data.txt")
// Écriture des données
let dataToCache = "Some cached data".data(using: .utf8)!
do {
try dataToCache.write(to: fileURL)
} catch {
print("Erreur lors de l'écriture dans le fichier : \(error)")
}
// Lecture des données
do {
let cachedData = try Data(contentsOf: fileURL)
let cachedString = String(data: cachedData, encoding: .utf8)
print("Données en cache : \(cachedString ?? "nil")")
} catch {
print("Erreur lors de la lecture du fichier : \(error)")
}
// Exemple avec UserDefaults (mise en cache de données simples)
let defaults = UserDefaults.standard
// Écriture des données
defaults.set("cached_value", forKey: "myCachedKey")
// Lecture des données
let cachedValue = defaults.string(forKey: "myCachedKey")
print("Valeur en cache depuis UserDefaults : \(cachedValue ?? "nil")")