【发布时间】:2017-10-12 21:00:53
【问题描述】:
我在 CoreData 并发方面遇到了一些问题。
当目标线程被DispatchGroup 阻塞时,我无法执行context.perform。
这是一个显示问题的简单示例:
func upload(objects: [NSManagedObject]) {
let group = DispatchGroup()
for object in objects {
group.enter()
upload(object) {
group.leave()
}
}
group.wait() // current thread is blocked here
someAdditionalWorkToDoInSameThread()
}
func upload(object: NSManagedObject, completion: ()->()) {
let context = object.managedObjectContext
performAlamofireRequest(object) {
context.perform {
// can't reach here because the thread is blocked
update(object)
completion()
}
}
}
请帮助我正确地重新实现它。谢谢。
【问题讨论】:
标签: ios swift core-data concurrency grand-central-dispatch