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("Δεδομένα στην cache: \(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")")