Swift Coredata插入和分派组
我有一个Swift Coredata插入和分派组,swift,core-data,grand-central-dispatch,Swift,Core Data,Grand Central Dispatch,我有一个createGroup()函数,它使用调度组确保在继续之前将新组的所有数据上载到我的远程数据库。我还想将数据的副本本地保存到用户的CoreData。然而,我对此有点陌生,不确定在哪里安全地执行实体插入 我认为最好的选择是,当一切都上传到远程数据库时,将其保存在调度组的notify回调中 var managedObjectContext: NSManagedObjectContext! func createGroup(onSccess completion:@escaping () -
createGroup()
函数,它使用调度组确保在继续之前将新组的所有数据上载到我的远程数据库。我还想将数据的副本本地保存到用户的CoreData。然而,我对此有点陌生,不确定在哪里安全地执行实体插入
我认为最好的选择是,当一切都上传到远程数据库时,将其保存在调度组的notify
回调中
var managedObjectContext: NSManagedObjectContext!
func createGroup(onSccess completion:@escaping () -> Void) {
let dataDispatchGroup = DispatchGroup()
dataDispatchGroup.enter()
// Do asynchronous task 1
dataDispatchGroup.enter()
// Do asynchronous task 2
dataDispatchGroup.notify(queue: DispatchQueue.main, execute: {
// Do insertion here
// NSEntityDescription.insertNewObjectForEntityForName....
completion()
})
}
我听说在处理线程时,需要小心保存到CoreData。我的方法是安全的还是有更好的方法?如果没有看到实际的CoreData代码,很难说。如果没有进一步的信息,我建议使用
managedObjectContext.perform(){//do CD stuff,save context}
。dispatchGroup
部分看起来不错。我只是想做正常的NSEntityDescription。在那里插入NewObjectForentityForName
,我把它添加到我的问题中。没关系。您的核心数据发生在当前队列中。别忘了dataDispatchGroup.leave()
。