作者cf1064 (蚵仔)
看板MacDev
標題[問題] 有關alamofire
時間Wed Jul 15 22:23:25 2015
請問各位有用過alamofire的大大
因為最近寫程式的時候,需要上傳多張圖片
然後Server上的php會回傳伺服器上該圖片的路徑及修改後檔名
現在的做法是將上傳的部份放在func裡,然後透過for去跑func
最後取得這些圖的路徑後,再去做資料庫新增的動作
但現在遇到的問題是在跑alamofire時,他Post出去後就不等待他回傳
程式繼續往下執行到新增至資料庫,導致該變數還沒取得回傳的資料就寫到
資料庫而造成沒有資料,請問有人遇過這樣的問題?要如何解決或是有哪些
關鍵字可以做查詢呢?謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.176.82
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MacDev/M.1436970208.A.6F4.html
1F:推 neotek: 因為是Async呀, 應該有callback等他回傳吧@@ 07/15 23:07
2F:→ 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
3F:推 gradyzhuo: 因為你把Alamofire的呼叫包進另一個function, 你可以 07/17 00:36
4F:→ gradyzhuo: 幫你的function加一個callback的closure,或是也可以把p 07/17 00:36
5F:→ gradyzhuo: rintln("Upload Final") 移到 .responseJSON { (reques 07/17 00:36
6F:→ gradyzhuo: t, response, data, error) in {...}裡面就可以了 07/17 00:36
7F:→ cf1064: 可是要上傳六個不同的圖片,所以把final放在response好像 07/17 01:42
8F:→ cf1064: 沒辦法解決,因為在upload final後還有講六個url一次寫入 07/17 01:42
9F:→ cf1064: 到資料庫的動作 07/17 01:42
10F:推 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
11F:→ gradyzhuo: 我改了一下 你試試看 07/17 16:17
13F:→ cf1064: 感謝,可以運作了,只是有時候偶爾會出現問題,有時候又 07/17 21:45