Sobes.tech
Middle

როგორ შეიძლება მონაცემების ქეშირება განხორციელდეს მხოლოდ საკუთარი ინსტრუმენტებით, მესამე მხარის ბიბლიოთეკების გამოყენების გარეშე?

sobes.tech AI

პასუხი AI-სგან

HTTP/HTTPS მოთხოვნებისთვის URLCache-ის გამოყენება, ფაილებისთვის 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")")