Cachyr

一个为 iOS、macOS、tvOS 和 watchOS 设计的类型安全的键值数据缓存,使用 Swift 编写。

已经有很多缓存解决方案了,那么为什么要再创建一个呢?我们有一些需求,现有的解决方案满足了其中一些,但并非全部

安装

CocoaPods

Add to Podfile:
pod 'Cachyr'

Then:
$ pod install

Swift Package Manager

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 协议,可以将缓存的数据转换为您在检索值时定义的返回类型。

DataStringInt(所有整数类型)、FloatDouble 都有默认的 DataConvertable 实现。

有关详细的用法示例,请查看 Usage.md

待办事项

这个框架已经可以用于生产环境,但仍有许多可能的改进。一些已知的任务是

非常欢迎 Pull Requests。