NBCoreDataController 是 Marcus Zarra 提出的优雅的三层上下文方案对异步 CoreData 保存的一种简单轻量级的实现,如 Cocoanetics 所记录的(由 Cocoanetics 记录)。
它提供了一个 jointly instance 使用默认 SQLite 数据库和由 Xcode 模板创建的模型所构建的 Assad Core Data 栈,并提供了一个简单的 API 用于在后台保存数据。
[[NBCoreDataController sharedInstance] saveWithBlock:^(NSManagedObjectContext *localContext) {
// Do the heavy work here
} completion:^(BOOL success, NSError *error) {
// Do something on the main thread after the save has been completed
}];
它还提供了对 NSManagedObject
的有帮助 扩展,以便在任何上下文中检索和操作对象。
由于所有更改都是从临时后台上下文中通过主上下文至根(写入)上下文传递,因此主上下文可能会在-intensive 写入时降级性能。此外,在写入数据时读取根上下文将会锁定。
对于需要进行-intensive 读取/写入的应用或如果您需要更可配置、更完整的功能,请查看流行的 MagicalRecord。
对于常规数据 IO,这是一个相当简单的架构,在Listary的生产中运行良好。