【发布时间】:2017-04-10 01:33:22
【问题描述】:
我使用以下方法创建了一个 NSManagedObjectContext:
lazy var managedObjectContext: NSManagedObjectContext = {
let coordinator = self.persistentStoreCoordinator
var managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
return managedObjectContext
}()
然后我使用 AlamoFire 进行 API 调用,并在回调中尝试保存父对象:
let objectDescription = NSEntityDescription.entity(forEntityName: "Parent", in: managedObjectContext)
var managedObject = NSManagedObject(entity: objectDescription!, insertInto: managedObjectContext) as? Parent
Wich 成功完成(耶!)
然后我调用 API 来获取他们的孩子,并在回调中尝试获取父母以链接他们:
let fetchRequest:NSFetchRequest<Parent> = NSFetchRequest<Parent>(entityName: "Parent")
fetchRequest.includesPendingChanges = true
let result = try managedObjectContext.fetch(fetchRequest)
现在我收到result.count = 0 :(
这两个 CoreData 操作发生在不同的线程中,我觉得这就是问题所在……真的吗?我该如何解决?
非常感谢:)
【问题讨论】:
标签: ios swift multithreading core-data nsfetchrequest