看板 MacDev 關於我們 聯絡資訊
請問各位有用過alamofire的大大 因為最近寫程式的時候,需要上傳多張圖片 然後Server上的php會回傳伺服器上該圖片的路徑及修改後檔名 現在的做法是將上傳的部份放在func裡,然後透過for去跑func 最後取得這些圖的路徑後,再去做資料庫新增的動作 但現在遇到的問題是在跑alamofire時,他Post出去後就不等待他回傳 程式繼續往下執行到新增至資料庫,導致該變數還沒取得回傳的資料就寫到 資料庫而造成沒有資料,請問有人遇過這樣的問題?要如何解決或是有哪些 關鍵字可以做查詢呢?謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.176.82 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1436970208.A.6F4.html
neotek: 因為是Async呀, 應該有callback等他回傳吧@@ 07/15 23:07
neotek: code貼上來才知道錯在哪 07/15 23:07
CODE如以下網址: http://ideone.com/SahDjK 在ImageUpload的func裡每個上傳圖片都會回傳路徑,然後將他println出來 問題是在執行時,他跑的時候是先print Upload Final,然後後面才出現 url = FileUrl.string的資訊,不知道該如何等他跑完六張圖片上傳並取得六 張圖片分別的路徑名,最後再跑Upload Final這行? ※ 編輯: cf1064 (218.161.111.141), 07/16/2015 10:13:04
gradyzhuo: 因為你把Alamofire的呼叫包進另一個function, 你可以 07/17 00:36
gradyzhuo: 幫你的function加一個callback的closure,或是也可以把p 07/17 00:36
gradyzhuo: rintln("Upload Final") 移到 .responseJSON { (reques 07/17 00:36
gradyzhuo: t, response, data, error) in {...}裡面就可以了 07/17 00:36
cf1064: 可是要上傳六個不同的圖片,所以把final放在response好像 07/17 01:42
cf1064: 沒辦法解決,因為在upload final後還有講六個url一次寫入 07/17 01:42
cf1064: 到資料庫的動作 07/17 01:42
gradyzhuo: 那我覺的你可以查查看dispatch_group的用法 07/17 02:31
你好,我今天早上改用dispatch_group,可是一樣是Final先出來,再出來其他的url, 是因為我放錯地方嗎? 程式碼如下:http://ideone.com/ymyQm8 結果如下:http://i.imgur.com/Nfit9Qu.png 謝謝。 ※ 編輯: cf1064 (218.161.111.141), 07/17/2015 11:36:19
gradyzhuo: 我改了一下 你試試看 07/17 16:17
gradyzhuo: https://goo.gl/kNXUqU 07/17 16:18
cf1064: 感謝,可以運作了,只是有時候偶爾會出現問題,有時候又 07/17 21:45