2017-03-27 5 views
0

画像をアップロードした後、ユーザーが各ボタンの画像をクリックしてアップロードできる複数のボタンが含まれています。その画像のURL。ビューの下部にある[保存]ボタンをクリックすると、apiを呼び出してビューのすべての情報をサーバーに保存することができます。iOS Swift 3、Alamorfire:関数を呼び出す前にすべての画像のアップロードが完了するまで待ちます

enter image description here

私は、画像をアップロードするAlamofireを使用しています。 問題は、ユーザーがアップロードする画像を選択するとすぐにアップロードAPIを呼び出し、その写真をバックグラウンドでアップロードします。ユーザーが[保存]ボタンをクリックしてすべての情報を一度にアップロードします。

ユーザーが[保存]ボタンをクリックしても画像のアップロードが完了しないようにするには、アップロードが完了するまでビューが待機してから自動的に保存機能が呼び出されます。どうやってやるの?

答えて

0

1つの解決策は、DispatchGroupを使用することです。

//Create a dispatch group 
let dispatchGroup = DispatchGroup() 

for picture in listOfPicturesToUpload { 
    //Enter the group 
    dispatchGroup.enter() 

    self.upload(picture, completion:{ 
     //Leave the group on upload completion 
     dispatchGroup.leave 
    }) 
} 

//Called when all the requests are finished 
dispatchGroup.notify(queue: DispatchQueue.global(qos: .background)) { 
    //Call the save function as all the requests are finished. 
    self.save() 
} 
+0

申し訳ありませんが、私は質問を明確にしませんでした、私はそれを更新しました。問題は、ユーザーがアップロードする画像を選択するとすぐにアップロードAPIを呼び出し、その写真をバックグラウンドでアップロードすることです。ユーザーが[保存]ボタンをクリックしてすべての情報と画像を一度にアップロードするまで待つことはありません。 –

+0

これは単に実装の詳細です。何かを実行する前に複数のリクエストが完了するのを待つという概念です。 –

+0

ああ私のアプリがiOS 9をサポートしているのを忘れていましたが、dispatchGroup.notifyはiOS 10から利用可能です –

関連する問題