Sobes.tech
Junior — Middle

Чыгымдарсыз өз алдынча кэш механизмин кантип ишке ашыруу керек?

sobes.tech AI

AIден жооп

iOS'ta üçüncü tərəf kitabxanələr olmadan sadə önbellek mexanizmini həyata keçirmək üçün, açar və dəyərlərlə məlumatları saxlamaq üçün sözlük (Dictionary) istifadə edə bilərsiniz və önbelleyin ömrünü idarə etmək üçün məntiq əlavə edə bilərsiniz.

Swift-də nümunə:

class SimpleCache<Key: Hashable, Value> {
    private var cache = [Key: (value: Value, expiry: Date?)]()
    private let defaultExpiry: TimeInterval

    init(defaultExpiry: TimeInterval = 300) { // standart 5 dəqiqə
        self.defaultExpiry = defaultExpiry
    }

    func set(_ value: Value, for key: Key, expiry: TimeInterval? = nil) {
        let expiryDate = expiry != nil ? Date().addingTimeInterval(expiry!) : Date().addingTimeInterval(defaultExpiry)
        cache[key] = (value, expiryDate)
    }

    func get(_ key: Key) -> Value? {
        guard let entry = cache[key] else { return nil }
        if let expiry = entry.expiry, expiry < Date() {
            cache.removeValue(forKey: key)
            return nil
        }
        return entry.value
    }

    func remove(_ key: Key) {
        cache.removeValue(forKey: key)
    }

    func clear() {
        cache.removeAll()
    }
}

Bu sinif, açarlarla obyektləri saxlamağa, müddəti keçmiş məlumatları avtomatik silməyə və əl ilə önbelleyi idarə etməyə imkan verir.