2016-04-03 7 views
1

CoreDataにいくつかの項目が含まれていることに依存するアプリケーションを作成しようとしています。私はそれがすべて正常に動作する外部データソースと同期しています。すぐにアプリフローを制御する

私のアプリは、3つのメソッドを使用し、単一のビューアプリです:

syncData() 
createSpinner() 
showResult() 

createSpinnerCoreDataにいくつかのデータを持つに依存している - と一度だけ

showResultを実行する必要があるに依存しています'Spinner'が作成され、スピンナーがスピンされるたびに、作成時に一度呼び出され、スピナーが回転されるたびに

SyncDataはにあります、及びviewDidAppear()createSpinner()(これは画面サイズに応じてサイズを変更など)

問題は、最初の起動時にあるデータは、createSpinner()の時間にロードされず、したがって、アプリが無駄に見えます。最初の同期を待つことができますか、何かデータがあることを確認するために何かを設定しますか?

答えて

2

ソリューションは

あなたはシリアルキューを作成することによってこれを行うことができますし、私はself.syncDataを使用していたこと

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

に非同期両方の方法をディスパッチ同じスレッドで実行するsyncData() & createSpinner()を強制することです()xcode以外の場合はxcodeが文句を言う - それ以外の場合はうまくいく - ありがとう – Dan

+0

ええ私はxcodeではなくブラウザにコードを書いていたのでこれを忘れてしまった。 –

関連する問題