通过 AFNetworking 在指定索引处将 UIImage 添加到 NSMutableArray

Posted

技术标签:

【中文标题】通过 AFNetworking 在指定索引处将 UIImage 添加到 NSMutableArray【英文标题】:Add UIImage to NSMutableArray at Specified Index via AFNetworking 【发布时间】:2013-02-27 04:08:23 【问题描述】:

我正在使用 cellForRowAtIndexPath 中的以下代码从 Web 服务获取图像:

[cell.posterImageView setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[postersURLArray objectAtIndex:indexPath.row]]] placeholderImage:[UIImage imageNamed:@"placeholder.png"]
    success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
     
         if (request)
         
             [UIView transitionWithView:cell.posterImageView
                               duration:1.0f
                                options:UIViewAnimationOptionTransitionCurlUp
                             animations:^[cell.posterImageView setImage:image];
                             completion:nil];

             posterImageView.tag = indexPath.row;
             posterImageView.image = image;
             [myImage insertObject:posterImageView atIndex:posterImageView.tag];
         

        else
        
            NSLog(@"Cached");
        
    
    failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
    
        NSLog(@"Failed to fetch poster.");
    ];

但它总是会产生错误。我已经分配了 myImage 可变数组。

【问题讨论】:

【参考方案1】:

您传递给insertObject:atIndex:index 必须小于或等于当前已添加到数组中的对象数。您不能像现在这样在数组中的任意位置插入对象。

当您分配一个可变数组时,即使具有设定的容量,该数组也是空的。从空数组开始,您唯一的选择是调用 addObject: 或使用索引 0 调用 insertObject:atIndex:。除 0 以外的任何值(假设数组为空)都会导致异常。

如果您需要在随机位置插入对象,您必须首先用一组虚拟对象填充数组,例如NSNull 实例。这要求您知道最大数组大小。

NSUInteger maxSize = ... // some known maximum number of images
NSMutableArray *myImage = [NSMutableArray arrayWithCapacity:maxSize];
for (NSUInteger i = 0; i < maxSize; i++) 
    [myImage addObject:[NSNull null]];

现在,只要索引小于maxSize,您就可以将图像插入随机位置。但是现在你必须使用replaceObjectAtIndex:withObject: 而不是insertObject:atIndex:

【讨论】:

非常感谢!这是一个很大的帮助!

以上是关于通过 AFNetworking 在指定索引处将 UIImage 添加到 NSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章

Jquery在某个索引处将新行插入表中

在预定义索引处将数据行添加到数据表

如何在一个已经在python中保存整数值的索引处将字符分配给字符串?

我可以在调用者处将函数参数默认为 __FILE__ 的值吗?

使用 AFNetworking 的 API 请求出错

在 AFNetworking 中找不到具有指定主机名的服务器