EasyStash 1.1.7

EasyStash 1.1.7

Khoa Pham 维护。



EasyStash 1.1.7

❤️支持我的应用❤️

❤️❤️😇😍🤘❤️❤️

CI Status Version Carthage Compatible SPM compatible License Platform Swift

描述

EasyStash 是一个在 Swift 中的简单而轻量级的持久框架。它通过简单封装 NSCacheDataManager,为我们节省了繁琐的对象保存和加载工作。目前没有复杂的异步、过期处理或缓存策略,只是保存和加载。

  • 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")

保存和加载可编码对象

底层使用 JSONEncoderJSONDecoderData 进行序列化和反序列化

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()

列出所有文件。每个文件都有 nameurlmodificationDatesize 信息

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 文件。