2016-04-09: 已淘汰
CoreDataKit 将不再添加新功能。它被用于多个项目中,可能会在新的 Swift 版本中更新,但不再是积极开发。
CoreDataKit
CoreDataKit 负责处理 CoreData 的艰难和啰嗦的部分。它为您管理子上下文,并帮助轻松获取、创建和删除对象。
CoreData: 对象图管理解决方案,包括持久化。 Kit: 用于特定目的所需的设备集。
安装
CocoaPods 是将 CoreDataKit 添加到项目中的推荐方法。以下是一个包含 CoreDataKit 的基本 Podfile 示例
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'CoreDataKit'
版本指南
- Swift 4: 使用 0.13 及以上版本
- Swift 3: 使用 0.12
- Swift 2.3: 使用 0.11
- Swift 2.2: 使用 0.10
用法
设置由自动迁移的SQLite存储支持的栈最基本和最常用的变体是以下这种
// Initialize CoreData stack
if let persistentStoreCoordinator = NSPersistentStoreCoordinator(automigrating: true) {
CDK.sharedStack = CoreDataStack(persistentStoreCoordinator: persistentStoreCoordinator)
}
实现 NamedManagedObject 协议
为了使 CoreDataKit 能够使用您的 NSManagedObject 子类,例如下面的示例中的 Car,CDK 需要您的子类实现 NamedManagedObject 协议,以便初始化您的类
class Car: NSManagedObject, NamedManagedObject {
static var entityName = "Car" // corresponding to your Entity name in your xcdatamodeld
@NSManaged var color: String
@NSManaged var model: String
}
从这里开始,您可以使用共享的栈。例如,要创建并保存一个实体,此示例在一个后台上下文中执行一个块,将其保存到持久存储,并执行一个完成处理程序
CDK.performOnBackgroundContext(block: { context in
do {
let car = try context.create(Car.self)
car.color = "Hammerhead Silver"
car.model = "Aston Martin DB9"
return .saveToPersistentStore
}
catch {
return .doNothing
}
}, completionHandler: { result in
do {
try result()
print("Car saved, time to update the interface!")
}
catch {
print("Saving Harvey Specters car failed with error: \(error)")
}
})
使用承诺
如果您更喜欢使用承诺,而不是这个库的回调风格,您可以使用 Promissum 库与 CoreDataKit 一起使用。使用 CoreDataKit+Promise 扩展,上面的示例可以重写如下
let createPromise = CDK.performOnBackgroundContextPromise { context in
do {
let car = try context.create(Car.self)
car.color = "Hammerhead Silver"
car.model = "Aston Martin DB9"
return .saveToPersistentStore
}
catch {
return .doNothing
}
}
createPromise
.then { _ in
print("Car saved, time to update the interface!")
}
.trap { error in
print("Saving Harvey Specters car failed with error: \(error)")
}
贡献
我们将很高兴看到贡献,请在问题跟踪器中报告错误,创建拉取请求(请分支为 develop
)并提出新功能建议(也在问题跟踪器中)。
许可证 & 致谢
CoreDataKit 由 Mathijs Kadijk 编写,并可在 MIT 许可证 下使用,因此您可以在商业和非商业项目中免费使用它。CoreDataKit 是基于 MagicalRecord 启发的。