SKCache 1.6.1

SKCache 1.6.1

Steliyan Hadzhidenev 维护。



SKCache 1.6.1

  • Steliyan Hadzhidenev

skcache-logo

Platform CocoaPods License Twitter URL Website

目录

描述

SKCache 并不宣称在这一领域具有独特性,但它并不是另一个给你带来上帝力量的怪物库。它只做缓存,但它做得很好。

主要功能

  • 支持 Swift 4.2、Swift 4 和 Swift 3.2。
  • 磁盘存储是可选的。
  • 支持 expiry 和过期对象的清理。
  • 广泛覆盖单元测试
  • iOS、tvOS 支持。

使用方法

存储

SKCache 是基于 NSCache 创建的,支持 Swift 中的所有有效类型。它具有内存存储,并可支持可选项的磁盘存储。内存存储应该更节省时间和内存,而磁盘存储用于超出应用程序生命周期内容,可以将其视为一种存储用户信息(这些信息应在应用程序启动之间持久化)的方便方式。

编码类型

SKCache 支持任何符合 Codable 协议的对象。您可以 自行定义符合 Codable 的协议,以确保可以通过 SKCache 保存和加载数据。

支持的类型包括:

  • 原始类型,如 IntFloatStringBool
  • 原始类型的数组,如 [Int][Float][Double]
  • 原始类型的集合,如 SetSet
  • 简单的字典,如 [String: Int][String: String]
  • 日期
  • URL
  • 数据

错误处理

错误处理是通过 try catch 实现的。SKCache 使用 Operations 抛出错误。

/// Enum to hold possible errors during execution of methods over SKCache
///
/// - fetchFail: Failed to fetch an object
/// - deletaFail: Failed to delete an object
/// - saveFail: Failed to save an object
/// - loadFail: Failed to load the SKCache
public enum Operations: Swift.Error {
case fetchFail
case deletaFail
case saveFail
case loadFail
}

可能存在错误,这是因为磁盘问题或保存/加载数据到/从设备存储时的类型不匹配。因此,如果您想要处理错误,您需要执行 try catch

do {
try SKCache.save()
} catch {
print(error)
}
do {
try SKCache.load()
} catch {
print(error)
}

配置

以下是设置一些配置选项的方法:

SKCache.elementsCount = 1000 // setup total count of elements saved into the cache

SKCache.elementsCostLimit = 1024 * 1024 // setup the cost limit of the cache

SKCache.shared.expiration = .everyDay // setup expiration date of each object in the cache

过期日期

默认情况下,所有保存的对象都具有与在 SKCache.shared.expiration 中指定的过期时间相同的过期时间。您可以通过在 SKObject 的构造函数中指定 expiry 来为特定对象覆盖此设置。

// Default expiry date from configuration will be applied to the item
let object = SKObject(value: "This is a string", key: "string")

// A given expiry date will be applied to the item
let object = SKObject(value: "This is a string", key: "string", expirationDate: ExpiryDate.everyDay.expiryDate())

添加/获取对象

如果您想添加或获取对象,只需按照以下简单步骤进行

//1. Create a SKObject
let object = SKObject(value: "This is a string", key: "string")

//2. Add it to the cache
SKCache.shared.add(object: object)

//3. Fetch an object from the cache
let string: String? = SKCache.shared.get(forKey: "string")

启用磁盘存储

从版本 1.3.0 开始,磁盘存储默认启用。无需调用额外方法来加载包含对象的缓存。引入了一个新的属性 isOnlyInMemory 来指示缓存对象是否将保存在磁盘空间中或保留在内存中。

安装

Cocoapods

SKCache 通过 CocoaPods 可用。要安装它,只需将以下行添加到您的 Podfile 中

pod 'SKCache'

作者

SKCache 由 Dev Labs 创建和维护。您可以在 @devlabsbgdevlabs.bg 找到我们

贡献

我们非常希望您为 SKCache 贡献,因此

  • 如果您发现了一个错误,请开启一个问题
  • 如果您有功能请求,请开启一个问题
  • 如果您想要贡献,请提交一个拉取请求

许可证

SKCache 在 MIT 许可证下可用。请参阅LICENSE