gpt4 book ai didi

multithreading - Swift - 我如何等待 dispatch_async 完成?

转载 作者:行者123 更新时间:2023-11-28 08:52:32 25 4
gpt4 key购买 nike

当我的应用程序第一次启动时,我执行将数据从磁盘导入 CoreData 的任务。我在后台线程中做事。然后我切换到主线程并从 CoreData 执行加载。

问题是有时从 CoreData 加载发生在从磁盘导入完成之前。所以我需要一种方法来等待导入完成,并且只有它们从数据库执行加载。

我如何在 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()

}

}
}

最佳答案

也许您应该尝试向 importArticlesListFromDisk 和 importArticlesFromDisk 添加完成处理程序,然后在完成 block 中从数据库加载。

dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)) { [unowned self] in
self.importArticlesAndArticlesListFromDisk() {
// Completion Handler
dispatch_async(dispatch_get_main_queue()) { [unowned self] in
self.loadArticlesListFromDb()
self.loadArticlesFromDb()
}
}
}

关于multithreading - Swift - 我如何等待 dispatch_async 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33825588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com