Cachyr 1.0.2

Cachyr 1.0.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017年3月
SwiftSwift版本3.0
支持SPM支持Swift Package Manager (SPM)

YrYr维护。



Cachyr 1.0.2

  • Yr

Cachyr

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

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

  • 完全使用Swift 3编写。
  • 类型安全,同时允许存储任何类型的数据。
  • 磁盘和内存缓存。
  • 当查找结果返回缓存缺失时,以简单的方式填充缓存。
  • 干净的、单一用途的实现。仅用于缓存,不再其他。)

安装

手动

克隆仓库到合适的地方,例如在您的项目仓库中,这样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

待办事项

这个框架已经生产就绪,但还有许多可能的改进。一些已知的任务包括

  • 更好的线程同步。缓存使用串行派发队列来处理并发访问和内存/磁盘值的同步。这使得代码易于理解和推理,但它的性能不如使用多重读者单写者模式的解决方案。我们尝试使用带有派发屏障的并发派发队列进行缓存更新,但这变得很混乱,代码的可读性受到了影响。在早期开发阶段,串行队列是最佳选择,但仍有改进的空间。
  • 磁盘使用限制。磁盘缓存没有存储数据的限制。
  • 默认的 DataConvertable 支持更常见的数据类型。

欢迎提交拉取请求。