8
非同期ネットワークリクエストを含むSwift forループの実行が完了するまで待機します
for inループで一連のネットワークリクエストをfirebaseに送信し、メソッドの実行が完了したら、データを新しいビューコントローラーに渡します。これが私のコードです: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)") ref.observeSingleEventOfType(.Value, withBlock: { snapshot in datesArray["\(key.0)"] = snapshot.value }) } // Segue to new view controller here and pass datesArray once it is complete 私にはいくつかの懸念があります。最初に、forループが終了してすべてのネットワーク要求が完了するまで、どのように待つのですか?observeSingleEventOfType関数は変更できません。FirebaseSDKの一部です。また、forループのさまざまな反復からdatesArrayにアクセスしようとすることで、ある種の競合状態を作成しますか(意味があると思います)。私はGCDとNSOperationについて読んでいましたが、これは私が作成した最初のアプリであるため、少し迷っています。 注:Locations配列は、firebaseでアクセスする必要があるキーを含む配列です。また、ネットワーク要求が非同期で発生することも重要です。すべての非同期リクエストが完了するまで待ってから、datesArrayを次のビューコントローラーに渡します。