我正在尝试构建一个依赖于 CoreData
中的某些项目的应用程序.我让它与外部数据源同步,一切正常。
我的应用程序使用三种方法,并且是单 View 应用程序:
syncData()
createSpinner()
showResult()
现在
createSpinner
取决于 CoreData
中有一些数据- 并且只需要运行一次showResult
取决于已创建的“微调器”,并在创建时调用一次以初始化自身,以及每次旋转我的微调器时我目前有
SyncData
在 viewDidLoad()
,以及 createSpinner()
在 viewDidAppear()
(因为它会根据屏幕大小改变大小)问题是在首次启动时数据没有及时加载
createSpinner()
,因此该应用程序看起来毫无用处。我如何“等待”第一次同步,或者设置一些东西来检查是否有一些数据?
最佳答案
解决办法是强制syncData()
& createSpinner()
在同一个线程中运行
您可以通过创建一个串行队列并将这两种方法异步分派(dispatch)到其中来做到这一点
let serialQueue = dispatch_queue_create("com.mycompany.myview", DISPATCH_QUEUE_SERIAL);
override func viewDidLoad() {
super.viewDidLoad()
dispatch_async(serialQueue) {
syncData()
}
}
override func viewDidAppear() {
super.viewDidAppear()
dispatch_async(serialQueue) {
createSpinner()
}
}
关于ios - 快速控制应用程序流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36383501/