先看描述
需求是怎样的:for 循环里面、多个网络请求上传图片,每次上传一张,至于为什么每次只上传一张呢,因为上传一张将要返回图片存储服务器的地址,然后再把地址作为请求参数,请求自己服务器的 API。
过程可以说曲折,不过也有收获
解决方案一:
递归调用上传图片的函数、第一张请求成功后,然后第二张,依次进行。当然效率肯定不高,即使上传图片的AFN方法做了多线程处理。中间上传失败了,还继续上传吗?需求决定。所有放弃
解决方案二:
使用GCD 队列组:这里就直接贴代码了:
我只能说想法很完美啊,网上也不只提出这种方案,但是我的实践过程是有问题了。网络请求延迟,队列组不可控。所以放弃
方案三:利用数组的有序性:
怎么个利用法?请看:
1. 创建一个模型、两个属性第一个你要上传的数据信息如:image 或者 data ,根据你上传函数需要的参数来定。第二个属性:NSString URL 服务端返回的图片地址:
2. 将你要上传的图片数组、封装成模型数组,数组是有序的这就是重点,for 循环 模型作为参数调用图片上传函数,请求成功后更新模型的值
3. 判断所有的图片上传完毕,然后,就从模型数组里面去取 ,图片 url ,请求自己的服务器api
好了,应该很清楚吧。不清楚再上点干货:
model:
function
结语:
如果看完这篇文章,对你有那么一丝的帮助,请点赞,哈哈毕竟赞美是我天朝的美德嘛,点一下又不会怀孕对不对。
如果你有更好的方案、欢迎提出来一起讨论。
谢谢!
作者:他们叫我朱老师
链接:https://www.jianshu.com/p/f147942a515b
领取专属 10元无门槛券
私享最新 技术干货