一个为 iOS、macOS、tvOS 和 watchOS 设计的类型安全的键值数据缓存,使用 Swift 编写。
已经有很多缓存解决方案了,那么为什么要再创建一个呢?我们有一些需求,现有的解决方案满足了其中一些,但并非全部
Add to Podfile:
pod 'Cachyr'
Then:
$ pod install
Swift Package Manager 是一个用于管理 Swift 代码分发的工具。它与 Swift 构建系统集成,可以自动化下载、编译和链接依赖项的过程。
要使用 Xcode 11 将 Cachyr
集成到您的 Xcode 项目中,请在 File > Swift Packages > Add
中指定它
https://github.com/nrkno/yr-cachyr
将 repo 克隆到合适的位置,例如您的项目 repo 内部,以便可以将 Cachyr 添加为子仓库,然后将 Cachyr.xcodeproj
拖到您的项目中。
或者构建框架并将其添加到您的项目中。
let cache = DataCache()
let key = "foo"
let text = "bar"
cache.setValue(text, for: key)
// ... do important things ...
let cachedText: String? = cache.value(for: key)
// Or asynchronously
let cachedText = cache.value(for: key) { (value: String?) in
// Do something with value
}
在此示例中,字符串 bar
存储在键 foo
的缓存中。稍后通过显式声明 String?
作为值类型将其作为字符串可选值检索。让我们看看泛型如何实现轻松的数据转换。
let textAsData = cache.value(for: key) { (value: Data?) in
print(value)
}
现在使用完全相同的键来检索值的数据表示形式。缓存将所有内容存储为数据,并且通过为类型实现 DataConvertable
协议,可以将缓存的数据转换为您在检索值时定义的返回类型。
Data
、String
、Int
(所有整数类型)、Float
和 Double
都有默认的 DataConvertable
实现。
有关详细的用法示例,请查看 Usage.md。
这个框架已经可以用于生产环境,但仍有许多可能的改进。一些已知的任务是
DataConvertable
支持更多常用类型。非常欢迎 Pull Requests。