Sobes.tech
Junior — Middle

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

sobes.tech AI

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

iOS-ზე მარტივი კეშის მექანიზმის განხორციელებისთვის, შეგიძლიათ გამოიყენოთ ლექსიკონი (Dictionary) მონაცემების შენახვაზე გასაღებებით და მნიშვნელობებით, ასევე დაამატოთ ლოგიკა კეშის სიცოცხლის ხანგრძლივობის მართვისთვის.

Swift-ის მაგალითი:

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

    init(defaultExpiry: TimeInterval = 300) { // 5 წუთი სტანდარტულად
        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()
    }
}

ეს კლასი საშუალებას გაძლევთ შეინახოთ ობიექტები გასაღებებით, ავტომატურად წაშალოთ ვადაგასული მონაცემები და მართოთ კეში ხელით.