簡體   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