测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布上次发布 | 2017年10月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 Yoshihiro Sawa 维护。
适用于 iOS 的可定制双级缓存(Swift)。第一级由 NSCache 提供内存支持,第二级使用 NSCachesDirectory 的文件系统。
所有缓存数据都由操作系统级别管理。因此,您不必考虑对象的数量以及内存或存储的利用率。
您可以使用以下方式制作有效的 PNG 缓存:
let cache = try! TwoLevelCache<UIImage>("effective-png-cache")
cache.downloader = { (key, callback) in
let url = URL(string: key)!
URLSession.shared.dataTask(with: url) { data, response, error in
callback(data)
}.resume()
}
cache.deserializer = { (data) in
return UIImage(data: data)
}
cache.serializer = { (object) in
return UIImagePNGRepresentation(object)
}
cache.findObject(forKey: "https://nzigen.com/static/img/common/logo.png") { (image, status) in
DispatchQueue.main.sync {
imageView.image = image
}
}
您可以使用枚举 TwoLevelCacheHitStatus 了解对象是如何被找到的。
.memory // Level 1 (NSCache)
.file // Level 2 (NSCachesDirectory)
.downloader // Cache miss (your device has downloaded the object)
.error // All caches return nil and downloading data has been failed
系统会自动删除未使用的资源。但是,您也可以按照以下方式删除缓存:
cache.removeAllObjects()
cache.removeObject(forKey: "https://nzigen.com/static/img/common/logo.png")
要运行示例项目,请克隆仓库,并首先从 Example 目录运行 pod install
。
TwoLevelCache 通过 CocoaPods 提供。要安装,
只需将以下行添加到您的 Podfile 中:
pod 'TwoLevelCache'
Yoshihiro Sawa (Nzigen, Inc), yoshihirosawa at gmail.com
TwoLevelCache 在 MIT 许可证下提供。有关更多信息,请参阅 LICENSE 文件。