TwoLevelCache 0.1.0

TwoLevelCache 0.1.0

测试已测试
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

您可以使用枚举 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 文件。