GoodRequest/GoodPersistence
GitHub: GoodRequest/GoodPersistence
一个基于属性包装器的iOS缓存库,简化密钥链与UserDefaults的数据存储与访问。
Stars: 37 | Forks: 2

# GoodPersistence
[]()
[](https://docs.swift.org/swift-book/)
[]()
[]()
[](#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, 去重, 威胁情报, 存储, 安全存储, 密钥链访问, 属性包装, 属性包装器, 应用功能, 开发者工具, 开源, 操作系统检测, 数据持久化, 日志, 移动端缓存, 简化开发, 缓存, 苹果开发, 默认值处理