检查 NSMutableArray 元素是否存在



我从网络获取数据。在 ViewDidLoad 方法中,我初始化并保留我的数组:

arrBannersIMG = [[NSMutableArray alloc]init];
 [arrBannersIMG retain];

在 CellForRowAtIndexPath 中,我需要检查是否存在arrBannersImg[indexPath.row],如果是 - 从这个数组中设置 cell.image,如果不是 - 通过来自互联网的数据初始化 UIImage,并将此图像添加到 arrBannersIMG。我试过这个:

 if (_arrayOfImages[indexPath.row] == [NSNull null]) {
       //
}

但是我在这一行有错误:

由于未捕获的异常"NSRangeException"而终止应用程序,原因: '* -[__NSArrayM 对象索引:]:索引 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)访问它,这种数组实现将使我们免于崩溃。

希望对您有所帮助。 请检查并让我知道我们是否必须采用其他解决方案。

相关内容

  • 没有找到相关文章

最新更新