繁体   English   中英

检查NSMutableArray元素是否存在

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM