我想在后台更新我设备上的一些数据。例如:
我将获得一个网络服务,它会返回一些我需要存储到我的核心数据中的更改。所以我的目标是使用 Alamofire 加载 JSON 数据,遍历我所有的 json 对象,并将它们存储到我的数据库中。当一切都完成后,我想更新我的 UI。
更改可能有数百行,所以我想在后台线程上执行此操作。错误使用时:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
var context = appDel.managedObjectContext
do {
tasks = try context.executeFetchRequest(fetchRequest) as! [Tasks]
}
catch {
fatalError("Fetching from the store failed")
}
for task in tasks {
// check something here, or set some new values
}
// save them in background? But how do i know if save is completed?
dispatch_async(dispatch_get_main_queue()) {
// update my UI
}
});
这一切都将在后台运行,还是我需要多个上下文?我会在其他地方读到,当我在线程中加载我的 managedObjectContext 时,整个 Fetch 在后台运行。我如何知道我的上下文何时完成保存,以便刷新我的 UITableView?
提前致谢!
最佳答案
您应该在
中执行后台代码context.performBlock{}
而不是dispatch_async
完成后调用
completionHandler(.NewData)
关于ios - 使用 Web 服务获取 CoreData 后台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34701002/