[英]Check if an object exist in a NSMutableArray of NSDictionary
[英]Check NSMutableArray element is exist
我从网络上获取数据。 在ViewDidLoad方法中,我初始化并保留了我的数组:
arrBannersIMG = [[NSMutableArray alloc]init];
[arrBannersIMG retain];
在CellForRowAtIndexPath中,我需要检查arrBannersImg[indexPath.row]
是否存在,如果是-从该数组设置cell.image,否则-通过Internet数据初始化UIImage,并将此图像添加到arrBannersIMG。 我尝试了这个:
if (_arrayOfImages[indexPath.row] == [NSNull null]) {
//
}
但是我在这条线上有错误:
由于未捕获的异常'NSRangeException'而终止应用程序,原因:' * -[__ NSArrayM objectAtIndex:]:索引0超出了空数组的范围'
我可以这样检查数组:
if (!array || !array.count){
...
}
但是我需要检查当前元素,而不是所有数组。 我怎样才能做到这一点?
您可能应该改变方法,并利用一些开源代码。 您实际上不想使用人口稀疏的数组(快速滚动可能会导致问题)。 您还希望确保在后台下载图像。
看一下使用SDWebImage
并将所有图像URL存储在数组中。 现在,当您需要显示图像时,只需将URL传递到SDWebImage
,它将根据您的需要从缓存/互联网加载。
我不确定为什么要在空数组中查找元素,但是要解决此错误,请尝试以下操作:
if(array.count > indexPath.row) {
if (_arrayOfImages[indexPath.row] == [NSNull null]) {
// ...
}
}
希望对您有所帮助。
首先,我建议您根据条件使用CellForRowAtIndexPath方法之外的数组。
这是因为可能是您的数组已经为空,并且您正在尝试将其与不存在的indexpath.row进行比较。 这就是为什么它崩溃了。
首先,您应该检查_arrayOfImages是否具有任何计数。
_arrayOfImages=arrBannersIMG;
if([_arrayOfImages count]>0)
{
NSData *imgData = UIImageJPEGRepresentation([_arrayOfImages indexPath.row], 0);
UIImage *img = [UIImage imageWithData:[_arrayOfImages indexPath.row];
}
else
{
//init UIImage by data from Internet
arrBannersIMG= //Insert your image object in array
}
我不知道您的整个情况,但是如果我们从像CellForRowAtIndexPath这样的委托方法中访问它,这种数组实现将使我们免于崩溃。
希望能帮助到你。 请检查,并让我们知道是否必须使用其他解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.