在 swift 中控制应用程序流程

Controlling app flow in swift

我正在尝试构建一个应用程序,该应用程序依赖于 CoreData 中的一些项目。我让它与外部数据源同步,一切正常。

我的应用使用了三种方法,并且是一个单视图应用:

syncData()
createSpinner()
showResult()

现在 createSpinner 依赖于 CoreData 中的一些数据 - 并且只需要 运行 一次

showResult 依赖于已创建的 'Spinner',并且在创建时被调用一次以初始化自身,以及每次旋转我的微调器时被调用

我目前在 viewDidLoad() 中有 SyncData,在 viewDidAppear() 中有 createSpinner()(因为它会根据屏幕尺寸改变大小)

问题是首次启动时数据未及时加载 createSpinner(),因此应用程序看起来毫无用处。我如何 'wait' 第一次同步,或设置一些东西来检查是否有一些数据?

解决方案是在同一个线程

中强制 syncData() & createSpinner() 到 运行

您可以通过创建串行队列并将两种方法异步分派到其中来实现

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()
    }
}