【发布时间】:2019-03-30 12:44:58
【问题描述】:
在我的应用程序中,我使用带有两个 NSManagedObjectContexts(viewContext 和背景上下文)的 NSPersistantContainer。我所有的读取操作都是在视图上下文中执行的,而我所有的写入操作都是在后台上下文中执行的(如下所示)。
创建一个新的 Animal 类
class func new(_ eid: String) {
//Create Animal Entity
let container = CoreDataService.persistentContainer
container.performBackgroundTask { (context) in
let mo = Animal(context: context)
mo.eid = eid
mo.lastModified = Date()
mo.purchaseDate = Date()
mo.uuid = UUID()
do {
try context.save()
}
catch let error {
print(error)
}
}
}
我遇到的问题是我需要将新创建的 NSManagedObject (Animal) 返回到调用 Animal.new(eid) 的管理器类, 用于显示对象属性。
我尝试过使用完成处理程序,但在返回值时遇到了问题,就像在主线程中使用后台 NSManagedObject 一样。
使用可能的新功能
Animal.new(eid) { (animal) in
if let animal = animal {
}
返回在后台上下文中创建的新创建的 NSManagedObject 的最佳方法是什么?
【问题讨论】:
标签: swift core-data background-thread