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