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数组的顺序是一致的,应该如何解决这个问题
阅读 2.9k
1 个回答

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

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

推荐问题
宣传栏