TinyStorage 使用教程
1. 项目介绍
TinyStorage 是一个简单、轻量级的 UserDefaults 替代品,它提供了更加可靠的访问方式并且原生支持 Codable 类型。它旨在解决 UserDefaults 在设备锁定或应用预加载状态下返回 nil 数据的问题,这些问题可能导致难以追踪的bug和数据丢失。TinyStorage 不加密存储文件,因此提供了更可靠的访问,但牺牲了安全性,因此不适用于存储敏感信息。
TinyStorage 的特点包括:
- 可靠的数据访问
- 支持存储 Swift Codable 类型
- 使用内存缓存提高性能
- 线程安全
- 支持跨进程使用
- 自动检测文件变化
- SwiftUI 属性包装器支持
- 提供迁移从 UserDefaults 到 TinyStorage 的函数
2. 项目快速启动
首先,您需要将 TinyStorage 添加到您的项目中。这可以通过 Swift Package Manager 完成,您只需添加以下依赖项:
.package(url: "https://github.com/christianselig/TinyStorage.git", from: "版本号"),
请将 "版本号" 替换为 TinyStorage 的最新版本号。
接下来,在您的应用程序中创建一个 TinyStorage 实例。通常,您会创建一个单例,以便在整个应用中使用:
extension TinyStorage {
static let appGroup: TinyStorage = {
let appGroupID = "您的应用组ID"
let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroupID)!
return .init(insideDirectory: containerURL, name: "tiny-storage-general-prefs")
}()
}
之后,定义一些键来引用您的存储数据。最好使用枚举来避免打字错误:
enum AppStorageKeys: String, TinyStorageKey {
case likesIceCream
case pet
case hasBeatFirstLevel
}
现在您可以读取和写入数据:
// 读取
let pet: Pet? = TinyStorage.appGroup.retrieve(type: Pet.self, forKey: .pet)
// 写入
TinyStorage.appGroup.store(true, forKey: .likesIceCream)
如果存储中没有值,尝试读取将始终返回 nil。
3. 应用案例和最佳实践
- 偏好设置:使用 TinyStorage 存储非敏感的用户偏好设置,例如用户是否喜欢某种功能。
- 数据迁移:如果您从 UserDefaults 迁移,使用提供的迁移函数来轻松转换数据。
- 多进程支持:在主应用和扩展(如 Widget)之间共享数据。
4. 典型生态项目
目前没有明确指出与 TinyStorage 相关的典型生态项目,但您可以查找使用 TinyStorage 的开源项目来了解其在实际应用中的用法。您可以在 GitHub 上搜索相关的项目和 issue 来获取更多信息。
以上是 TinyStorage 的基本介绍和使用方法。希望这个教程能帮助您开始使用这个项目。