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

96 lines
2.0 KiB
Swift
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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 {}