前言
CodablePersistenceStore基本上是一个Disk包装器。它在配合 Swift 4 中引入的新功能 Codable 类型 时,使我们的工作更加轻松。
兼容性
CodablePersistenceStore 需要 iOS 9+ 并与 Swift 4 项目兼容。因此您必须使用 Xcode 9。
使用方法
使用方法非常简单。您只需让模型实现 CodablePersistenceStore 导入中提供的 Persistable Type 协议即可。
重要!!! 文档中看到的所有方法都可能抛出异常。因此,请不要忘记处理异常。
模型
import CodablePersistenceStore
// Its an example.
struct Message: PersistableType {
let id: String
let title: String
let body: String
init(id: String, title: String, body: String) {
self.id = id
self.title = title
self.body = body
}
func identifier() -> String {
return self.id
}
}
持久化
要实际持久化数据,你需要从你的模型创建一个对象,并将其放入持久化方法中。目前有两种持久化方法。第一种是同步的,第二种是异步的。
let message = Message(id: "10", title: "Hello", body: "World!")
self.persistenceStore.persist(message)
这就是你要做的所有事情。还有一个带完成处理器的版本来执行后续操作。
let message = Message(id: "10", title: "Hello", body: "World")
self.persistenceStore.persist(message, completion: {
// do some stuff afterwards
})
检索
检索持久化的数据非常直接。始终有同步和异步方法。
let message = self.persistenceStore.get("id", type: Message.self)
就这么简单。
如果你想异步执行,就是这样
self.persistenceStore.get("id", type: Message.self, completion: { (message) in
// your message should be here right now
})
例如,如果您有大量消息,并希望获取所有这些消息,您可以调用以下方法
let messages = self.persistenceStore.getAll(Message.self)
或者异步的
self.persistenceStore.getAll(Message.self, completion: { (messages) in
// your messages should be here
})
删除
删除项有几个方法。这很有自我说明性。想象你已经有一些持久化的消息。
self.persistenceStore.delete(message)
当然有版本可以让你在删除某些东西之后执行操作(例如重新加载表格视图)
self.persistenceStore.delete(message, completion: {
// do things afterwards
})
但是还有一个版本,它需要一个标识符以及你想要删除的类型。
self.persistenceStore.delete("10", type: Message.self)
带有完成
self.persistenceStore.delete("10", type: Message.self, completion: {
// do things afterwards
})
筛选
你可以通过属性筛选出同一类型的所有项。例如
let itemWithID10 = self.persistenceStore.filter(Message.self, includeElement: { (item: Message) -> Bool in
return item.id == "10"
}).first
或者异步的
self.persistenceStore.filter(Message.self, includeElement: { (item: Message) -> Bool in
return item.id == "10"
}, completion: { (item) in
print(item.id)
})
存在
你可以在持久化一些数据之前检查即将持久化的项目是否已经存在于存储库中
let isAlreadyInStore = self.persistenceStore.exists(message1)
异步
self.persistenceStore.exists(message1, completion: { (bool) in
guard bool == false else { return }
// do stuff afterwards
})
更多选项
let isAlreadyInStore = self.persistenceStore.exists("10", type: Message.self)
或者异步
self.persistenceStore.exists("10", type: Message.self, completion: { (bool) in
guard bool == false else { return }
// to stuff afterwards
})
清除
要清除整个缓存,只需调用以下方法
self.persistenceStore.cacheClear()
安装
要使用 CocoaPods 在您的 Xcode 项目中集成 CodablePersistenceStore,请在您的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
use_frameworks!
target '<Your Target Name>' do
pod 'CodablePersistenceStore'
end
然后,运行以下命令
$ pod install
作者
Mario Zimmermann, [email protected]
许可
CodablePersistenceStore 是在 MIT 许可下发布的。