描述
EasyStash 是一个在 Swift 中的简单而轻量级的持久框架。它通过简单封装 NSCache
和 DataManager
,为我们节省了繁琐的对象保存和加载工作。目前没有复杂的异步、过期处理或缓存策略,只是保存和加载。
- Swift 5
- 支持 iOS、macOS、tvOS、watchOS
- 同步 API,具有显式 try catch
- 持久化 UIImage/NSImage
- 持久化 Codable 对象,包括原始类型
- 持久化数据
- 测试覆盖率
用法
主要的、唯一的类是 Storage
,它封装了内存和磁盘缓存。涉及磁盘的所有操作都可能导致错误,我们需要显式处理错误。
使用 选项
,我们可以自定义 文件夹
名称、搜索路径目录
、编码器
和 解码器
以用于 Codable
let options = Options()
options.folder = "Users"
storage = try! Storage(options: options)
try storage.save(image, forKey: "image")
try storage.save(users, forKey: "codable")
在进行磁盘操作之前,首先检查内存缓存,所以我们不会经常访问磁盘。
保存和加载图像
适用于两者:UIImage 和 NSImage。因为图像和数据加载使用相同的签名,我们必须显式指定类型
try storage.save(image, forKey: "image")
let loadedImage: UIImage = try storage.load(forKey: "image")
保存和加载可编码对象
底层使用 JSONEncoder
和 JSONDecoder
对 Data
进行序列化和反序列化
let user = User(name: "A", age: 10)
let cities = [City(name: "Oslo"), City(name: "New York")]
try storage.save(users, forKey: "user")
try storage.save(cities, forKey: "cities")
let loadedUser = try storage.load(forKey: "user", as: User.self)
let loadedCities = try storage.load(forKey: "cities", as: [City].self)
保存和加载数据
try storage.save(object: data, forKey: "data")
let loadedData: Data = try storage.load(forKey: "data")
保存和加载基本数据类型
虽然基本数据类型如 Int, String, Bool
遵从 Codable
协议,但不能直接使用 JSONEncoder
序列化成 Data
,因为 JSON 需要 root 对象。此框架处理此情况,因此您可以像往常一样保存和加载
try storage.save(100, forKey: "an int")
try storage.save(isLoggedIn, forKey: "a boolean")
文件夹信息
EasyStash 支持一些在 Storage
中检查文件和文件夹的有用函数。
检查文件是否存在
try storage.exists(forKey: "has_updated_profile")
删除文件
try storage.remove(forKey: "a flag")
删除所有文件
try storage.removeAll()
列出所有文件。每个文件都有 name
、url
、modificationDate
和 size
信息
let files = try storage.files()
检查文件夹大小
let size = try storage.folderSize()
检查文件夹是否有内容
try storage.isEmpty()
根据谓词删除文件。这在清除已过期的对象或基于某些标准对象时非常有用。
try storage.removeAll(predicate: { $0.modificationDate < migrationDate })
异步
EasyStash
旨在支持同步操作。如果我们想进行异步操作,使用 DispatchQueue
就很容易了。
DispatchQueue.global().async {
do {
try storage.save(largeImage, forKey: "large_image")
} catch {
}
}
安装
EasyStash 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile
pod 'EasyStash'
EasyStash 同样可通过 Carthage 获得。要安装,只需在 Cartfile 中写入
github "onmyway133/EasyStash"
EasyStash 同样可通过 Swift Package Manager 获得。在 Package.swift 中将 EasyStash 添加为依赖项。更多信息,请参阅 Swift Package Manager 文档。
.package(url: "https://github.com/onmyway133/EasyStash", from: "1.1.1")
EasyStash 还可以手动安装。只需下载并将项目中的 Sources
文件夹拖放下来。
作者
Pham Khoa, [email protected]
贡献
我们欢迎您为 EasyStash 贡献,有关更多信息,请查阅 CONTRIBUTING 文件。
许可协议
EasyStash 在 MIT 许可协议下可用。有关更多信息,请参阅 LICENSE 文件。