[問題] 有關alamofire

看板MacDev作者 (蚵仔)時間10年前 (2015/07/15 22:23), 10年前編輯推噓3(3010)
留言13則, 3人參與, 最新討論串1/1
請問各位有用過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

07/15 23:07, , 1F
因為是Async呀, 應該有callback等他回傳吧@@
07/15 23:07, 1F

07/15 23:07, , 2F
code貼上來才知道錯在哪
07/15 23:07, 2F
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

07/17 00:36, , 3F
因為你把Alamofire的呼叫包進另一個function, 你可以
07/17 00:36, 3F

07/17 00:36, , 4F
幫你的function加一個callback的closure,或是也可以把p
07/17 00:36, 4F

07/17 00:36, , 5F
rintln("Upload Final") 移到 .responseJSON { (reques
07/17 00:36, 5F

07/17 00:36, , 6F
t, response, data, error) in {...}裡面就可以了
07/17 00:36, 6F

07/17 01:42, , 7F
可是要上傳六個不同的圖片,所以把final放在response好像
07/17 01:42, 7F

07/17 01:42, , 8F
沒辦法解決,因為在upload final後還有講六個url一次寫入
07/17 01:42, 8F

07/17 01:42, , 9F
到資料庫的動作
07/17 01:42, 9F

07/17 02:31, , 10F
那我覺的你可以查查看dispatch_group的用法
07/17 02:31, 10F
你好,我今天早上改用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

07/17 16:17, , 11F
我改了一下 你試試看
07/17 16:17, 11F

07/17 16:18, , 12F
07/17 16:18, 12F

07/17 21:45, , 13F
感謝,可以運作了,只是有時候偶爾會出現問題,有時候又
07/17 21:45, 13F
文章代碼(AID): #1LfcpWRq (MacDev)
文章代碼(AID): #1LfcpWRq (MacDev)