DataManager 是一个轻量级的 Core Data 工具。它不是 Core Data 的替代品/包装程序。以下是一些亮点:
- 封装了与设置 Core Data 栈相关的样板代码。
- 使用私有
NSPrivateQueueConcurrencyType
上下文作为根上下文,并有一个公共NSMainQueueConcurrencyType
子上下文来设置堆栈。这种设置允许异步保存到磁盘。 - 提供 Swift 便捷的获取方法,利用泛型来防止您每次执行获取时都需要从
NSManagedObject
处理向下转换到实体的类。
要求
- iOS 9.0
- Swift 4.2
安装
DataManager 通过 CocoaPods 提供使用。要安装它,只需将以下行添加到您的 Podfile 中
pod 'DataManager'
如果您想测试 DataManager 的测试版,您可以从 develop 安装最新版本
pod 'DataManager', :git => 'https://github.com/metova/DataManager.git', :branch => 'develop'
用法
设置
当您的应用程序启动时,使用数据模型名称和持久化存储文件的名称设置 DataManager
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
DataManager.setUp(withDataModelName: "MyApp", bundle: .main, persistentStoreName: "MyApp")
/* ... */
return true
}
这不会立即设置 Core Data 栈。堆栈在首次使用 DataManager.mainContext
时进行懒加载。
获取数据
DataManager 使用泛型,因此您不必在每次执行获取操作时都担心将 NSManagedObject
结果转换为实体的类。例如,下面 olderUsers
的类型是 [User]
。
let predicate = NSPredicate(format: "\(#keyPath(Person.birthDate)) < %@", someDate)
let olderUsers = DataManager.fetchObjects(entity: User.self, predicate: predicate, context: DataManager.mainContext)
删除
DataManager.delete([user1, user2], in: DataManager.mainContext)
保存
DataManager.persist(synchronously: false)
子上下文
let backgroundContext = DataManager.createChildContext(withParent: DataManager.mainContext)
backgroundContext.perform {
/* Do heavy lifting in the background */
}
鸣谢
DataManager 由 Metova Inc. 拥有和维护
许可证
DataManager受MIT许可证的许可。更多信息请参阅许可证文件。
替代方案
- CoreDataMate是由Todd Grooms创建的,是DataManager从Objective-C版本演变而来的基本版本。