iOS 关于图片上传到七牛之后顺序不对的问题
迷茫
迷茫 2017-04-17 17:44:19
[iOS讨论组]

QNUploadManager *upManager = [[QNUploadManager alloc] init];
for (NSUInteger i = 0; i < _imageList.count; i++) {

    id image = _imageList[i];//依次从数组取出将要上传的图片
    NSLog(@"%@",image);
    if([image isKindOfClass:[NSString class]]) {
        [self saveToIds:image];//保存到ids数组
        
    } else {
        NSData *data = UIImageJPEGRepresentation(image, 1);

       [upManager putData:data key:[NSUUID UUID].UUIDString token:token
                      complete: ^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
                          NSLog(@"%@", info);
                          NSLog(@"%@", resp);
                          [self saveToIds:[resp objectForKey:@"key"]];//这个方法是把得到的字符串保存到ids数组
                          
                 } option:nil];
        
    }
}

为什么通过这个方法得到的ids数组顺序是乱的,和_imageList数组中的图片顺序不一致
现在希望得到的ids数组中的图片和_imageList数组的顺序是一致的,应该如何解决这个问题
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
迷茫

putData 那个方法是异步的吧, 保存字符串到到 ids 数组这个操作是在请求完成的回调里进行的, 但是你先请求的未必会先完成,比如每张图片的大小不一样需要的上传时间就不一样,或者网络不稳定,或者任务的调度等都很容易造成这样的结果。想要保证 ids 里结果的顺序也容易,你实现应该是知道数组的长度的是吧?假设长度是 n,先分配好 ids 数组,长度为 n,元素初值都是 NSNull, 在回调方法里,直接把 ids 的第 i 个元素设置成响应里得到的结果就可以了。

当然肯定还有很多别的方法,我这里主要是大致解释了一下为什么会产生这样的问题。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号