Visual_Novel_iOS/crush/Crush/Src/Utils/AppCache.swift

96 lines
2.0 KiB
Swift
Raw Normal View History

2025-10-09 10:29:35 +00:00
//
// CacheTool.swift
// E-Wow
//
// Created by lym on 2021/1/5.
//
import Cache
import Foundation
// MARK: - cache keys
enum CacheKey: String {
case user
case token
case pushToken
case ImAppkeyInfo
case keyword
case homeEnterBackgroundTime
case boolIdfaSubmmited
// MARK: Flag
case meetGuideSeen
// MARK: Setting
// MARK: Config
case userAppLanguage
case chatRedBadgeConfig
// MARK: Chat & Friends
case friendsHeartBeatShowedOnce
// MARK: Test
case testRecordAIId
}
// MARK: - config
let diskConfig = DiskConfig(name: AppConst.bundleId)
let dataStorage = try! Storage<String, Data>(
diskConfig: diskConfig,
memoryConfig: MemoryConfig(),
transformer: TransformerFactory.forData()
)
// MARK: - AppCache
class AppCache {
// Add objects to the cache
class func cache<T: Codable>(key: String, value: T) {
let storage = dataStorage.transformCodable(ofType: T.self)
do {
try storage.setObject(value, forKey: key)
dlog("✅ 缓存成功key = \(key), value = \(value)")
} catch {
dlog("❌ 缓存错误:\(error)")
}
}
// Fetch object from the cache
class func fetchCache<T: Codable>(key: String, type: T.Type) -> T? {
do {
let storage = dataStorage.transformCodable(ofType: type)
let value = try storage.object(forKey: key)
return value
} catch {
dlog("❌ 获取缓存失败key = \(key), error = \(error)")
return nil
}
}
// Remove object from the cache
class func removeCache(key: String) {
do {
try dataStorage.removeObject(forKey: key)
} catch {
dlog("❌ remove cache error = \(error)")
}
}
// Clear cache
class func clearCache() {
do {
try dataStorage.removeAll()
} catch {
dlog("❌ clear cache erro")
}
}
}
extension Array: Encodable, Decodable {}