Middle
Как може да се реализира кеширане на данни, използвайки само собствени инструменти, без използване на външни библиотеки?
sobes.tech AI
Отговор от AI
Използване на URLCache за HTTP/HTTPS заявки, FileManager за кеширане на файлове и UserDefaults за малки, прости данни.
// Пример с URLCache
let configuration = URLSessionConfiguration.default
configuration.requestCachePolicy = .reloadIgnoringLocalCacheData // Примерна политика
let session = URLSession(configuration: configuration)
let url = URL(string: "https://example.com/api/data")!
let task = session.dataTask(with: url) { data, response, error in
// Обработка на данните
}
task.resume()
// Пример с FileManager (кеширане на данни във файл)
let fileManager = FileManager.default
let cacheDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first!
let fileURL = cacheDirectory.appendingPathComponent("cached_data.txt")
// Записване на данни
let dataToCache = "Some cached data".data(using: .utf8)!
do {
try dataToCache.write(to: fileURL)
} catch {
print("Грешка при запис във файл: \(error)")
}
// Четене на данни
do {
let cachedData = try Data(contentsOf: fileURL)
let cachedString = String(data: cachedData, encoding: .utf8)
print("Кеширани данни: \(cachedString ?? "nil")")
} catch {
print("Грешка при четене на файла: \(error)")
}
// Пример с UserDefaults (кеширане на прости данни)
let defaults = UserDefaults.standard
// Записване на данни
defaults.set("cached_value", forKey: "myCachedKey")
// Четене на данни
let cachedValue = defaults.string(forKey: "myCachedKey")
print("Кеширана стойност от UserDefaults: \(cachedValue ?? "nil")")