Sobes.tech
Junior — Middle

Tashqi kutubxonalarsiz mustaqil ravishda kesh mexanizmini qanday amalga oshirish mumkin?

sobes.tech AI

AIdan javob

iOSda uchinchi tomon kutubxonalarisiz oddiy kesh mexanizmini amalga oshirish uchun, kalitlar va qiymatlar bilan ma'lumotlarni saqlash uchun lug'at (Dictionary) dan foydalanishingiz mumkin, shuningdek, keshning yashash vaqtini boshqarish uchun logika qo'shishingiz mumkin.

Swiftda misol:

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

    init(defaultExpiry: TimeInterval = 300) { // 5 daqiqa standart
        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()
    }
}

Ushbu sinf, kalitlar bilan obyektlarni saqlash, muddati o'tgan ma'lumotlarni avtomatik ravishda o'chirish va qo'lda keshni boshqarish imkonini beradi.