DataRaft
DataRaft 是一个小巧的 Swift 框架,使得使用 Core Data 更加容易。
安装
通过 CocoaPods 进行安装。
platform :ios, '8.0'
use_frameworks!
target 'YourTarget' do
pod 'DataRaft'
end
使用方法
首先,创建和配置一个 DataRaft 实例。使用方法 configure(type:modelName:bundle:storePath:options:)
进行堆栈配置。
let db = DataRaft()
do {
try db.configure(modelName: "Example")
} catch {
fatalError(error.localizedDescription)
}
如果堆栈配置将花费很长时间(例如:从旧数据库迁移),请使用异步配置方法 configureAsync(type:modelName:bundle:storePath:options:completion:)
。
let db = DataRaft()
db.configureAsync(type: .sqLite, modelName: "Example") { error in
print(error)
}
要获取 NSManagedObjectContext 实例,使用
main()
用于主上下文。private()
用于新的私有上下文。
使用以下方法: performOnMain(_:)
,performOnPrivate(_:)
或它们的同步类似方法 performAndWaitOnMain(_:)
,performAndWaitOnPrivate(_:)
来处理您的数据。
db.performOnPrivate { context in
do {
let request = NSFetchRequest<NSManagedObject>(entityName: "Contact")
let contacts = try context.fetch(request)
} catch {
print(error)
}
}
要获取 NSManagedObject 实例,使用 fetch(predicate:sortDescriptors:)
或 fetch(predicate:sortedBy:ascending:)
。
db.performOnMain { context in
do {
let contacts: [Contact] = try context.fetch()
} catch {
print(error)
}
}
要将数据持久化到数据库,使用 saveToStore()
。
db.performOnMain { context in
do {
let contacts: [Contact] = try context.fetch()
contacts.first?.firstName = "John"
try context.saveToStore()
} catch {
print(error)
}
}
要创建 NSManagedObject 实例,使用 new()
。
db.performOnMain { context in
let contact: Contact = context.new()
}
Core Data 并发调试
从iOS 8和Yosemite开始,Core Data框架支持并发调试。它通过在您的应用从错误的调度队列访问管理上下文或管理对象时抛出异常来实现。要启用它,请在启动计划上添加 -com.apple.CoreData.ConcurrencyDebug 1
到传递给方案的参数中。
许可证
MIT许可证。有关详细信息,请参阅LICENSE文件。