一 问题描述
多个图片上传到服务器,需要保证图片添加的顺序与最后展示的顺序一致。
二 问题解决
由于上传图片的时候,针对每张图都有1个上传的接口请求,每个请求依次开始,但并没有保证完成顺序。
因此,根据图片文件大小的不同,请求完成的顺序可能与最开始的图片添加顺序不一致。
需要针对请求图片的序号,对每一个请求返回的结果进行编号对应。
然后将每个请求返回的结果,连同顺序编号一起作为一个整体元素放入一个请求结果数组。
最后等所有请求完成时,从结果数组中取出元素,根据元素的顺序编号,重新进行排序。
比如:图片数组为imageArray,图片请求的返回数据为result,请求返回对应的图片序号为index。则在请求返回时,需要将result连同index一起,使用字典Dictionary(index:result)组合成一个字典对象,放入请求结果数组resultArray中。最后求返回有序数组sortedResultArray时,遍历resultArray,将取出的元素dict,dict的value放入sortedResultArray在dict的key位置。
sortedResultArray[dict.key] = dict.value
三 小结
图片请求是异步请求,若多个文件不是一次整体上传,需要由客户端来保证图片的顺序。
为了充分利用网络,可以同时进行多个图片请求,但每个图片大小不一样,请求返回时,需要再结合原图片顺序重新排序图片请求结果。
swift 中也可以使用元组来组织图片序号和请求结果,但字典更佳。