【发布时间】:2015-11-20 11:27:22
【问题描述】:
当我的应用程序第一次启动时,我执行将数据从磁盘导入 CoreData 的任务。我在后台线程中做薄。然后我切换到主线程并从 CoreData 执行加载。
问题是有时会在从磁盘导入完成之前从 CoreData 加载。所以我需要一种方法来等待导入完成,并且只有他们从 db 执行加载。
如何在 Swift 中做到这一点?
我的代码如下所示:
func firstTimeLaunch() {
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)) { [unowned self] in
self.importArticlesListFromDisk()
self.importArticlesFromDisk()
dispatch_async(dispatch_get_main_queue()) { [unowned self] in
self.loadArticlesListFromDb()
self.loadArticlesFromDb()
}
}
}
【问题讨论】:
-
您是否尝试在“importArticlesFromDisk”的末尾加载数据?
-
请
importArticlesListFromDisk或importArticlesFromDisk额外拨打dispatch_async吗?因为如果没有,您的代码看起来会很好。 -
如果 Tom 引用的这两种方法中的任何一种是异步的,我们可以向您展示如何添加像subjective_c 推荐的完成处理程序。但我们可能需要看看这两种方法是什么样子才能更具体。
标签: multithreading swift core-data