作者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/cn.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