通过 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的主要内容,如果未能解决你的问题,请参考以下文章
如何在一个已经在python中保存整数值的索引处将字符分配给字符串?