GoodRequest/GoodPersistence

GitHub: GoodRequest/GoodPersistence

一个基于属性包装器的iOS缓存库,简化密钥链与UserDefaults的数据存储与访问。

Stars: 37 | Forks: 2

![Logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/cd5e434238134119.png) # GoodPersistence [![iOS Version](https://img.shields.io/badge/iOS_Version->=_12.0-brightgreen?logo=apple&logoColor=green)]() [![Swift Version](https://img.shields.io/badge/Swift_Version-5.5-green?logo=swift)](https://docs.swift.org/swift-book/) [![Supported devices](https://img.shields.io/badge/Supported_Devices-iPhone/iPad-green)]() [![Contains Test](https://img.shields.io/badge/Tests-YES-blue)]() [![Dependency Manager](https://img.shields.io/badge/Dependency_Manager-SPM-red)](#swiftpackagemanager) 一个属性包装器,旨在简化将数据缓存到密钥链和用户默认存储的过程。 此包装器使在应用程序中快速、轻松地实现缓存机制成为可能, 无需编写大量代码。 该属性包装器负责所有底层复杂性,使开发者能够专注于应用程序的功能。 ## 文档 您可以在[这里](https://goodrequest.github.io/GoodPersistence/documentation/goodpersistence/)查看 GoodPersistence 包的文档。 ## 安装 ### Swift Package Manager 创建一个 `Package.swift` 文件,并将包依赖项添加到依赖项列表中。 或者在不使用 package.swift 的情况下集成,通过 Xcode 的添加包界面进行添加。 ``` import PackageDescription let package = Package( name: "SampleProject", dependencies: [ .Package(url: "https://github.com/GoodRequest/GoodPersistence" from: "addVersion") ] ) ``` ## 用法 存储到用户默认设置 ``` @UserDefaultValue(String(describing: AppState.self), defaultValue: .initial) var appState: AppState ``` 存储到密钥链 ``` @KeychainValue("accessToken", defaultValue: "", accessibility: .afterFirstUnlockThisDeviceOnly) var accessToken: String ``` 使用发布者 ``` lazy var appStatePublisher = _appState.publisher .dropFirst() .removeDuplicates() .eraseToAnyPublisher() ``` ## 日志记录 ``` struct SamplePersistenceMonitor: PersistenceMonitor { func didReceive(_ monitor: any PersistenceMonitor, error: any Error) { print("Error received: \(error.localizedDescription)") } func didReceive(_ monitor: any PersistenceMonitor, message: String) { print("Message received: \(message)") } } GoodPersistence.Configuration.configure(monitors: [SamplePersistenceMonitor()]) ``` ## 许可证 GoodPersistence 在 MIT 许可证下发布。详见 [许可证](LICENSE.md)。
标签:Combine发布者, iOS, Keychain, SPM, Swift, Swift5.5, Swift Package Manager, UserDefaults, 代码简化, 依赖管理, 兼容iOS12, 去重, 威胁情报, 存储, 安全存储, 密钥链访问, 属性包装, 属性包装器, 应用功能, 开发者工具, 开源, 操作系统检测, 数据持久化, 日志, 移动端缓存, 简化开发, 缓存, 苹果开发, 默认值处理