2011-04-19 95 views
3

這裏我試圖在數組中添加對象並檢查對象是否存在於數組中。因爲我使用以下代碼..檢查數組中是否存在對象的問題?

NSInteger ind = [arrActionList indexOfObject:indexPath]; 
if (ind >= 0) { 
    [arrActionList removeObjectAtIndex:ind]; 
} 
else { 
    [arrActionList addObject:indexPath]; 
} 

在這裏,我想我正在做對..首先我正在檢查索引。如果它是> = 0我刪除對象,否則添加一個新的對象。

我的問題是,如果沒有找到對象的索引,它會將一個垃圾值分配給我的整數變量。我想它應該是-1,但它不是我在下一行中刪除對象拋出錯誤。

IND = 2147483647

任何幫助......

回答

9

Official Documentation可能會對您有所幫助。

簡而言之,如果指定的對象不在數組中,indexOfObject:返回常量NSNotFoundNSNotFound常量的值爲0x7FFFFFFF,等於十進制中的2147483647。

你的代碼應該表現正常,如果你這樣做:

NSInteger ind = [arrActionList indexOfObject:indexPath]; 
if (ind != NSNotFound) { 
    [arrActionList removeObjectAtIndex:ind]; 
} 
else { 
    [arrActionList addObject:indexPath]; 
} 
7

如果您不需要以後IND的價值,你可以只寫;

if ([arrActionList containsObject:indexPath]) { 
    [arrActionList removeObject:indexPath; 
} 
else { 
    [arrActionList addObject:indexPath]; 
} 

或者代替測試IND> = 0時,使用

if (ind != NSNotFound) { ... 

,因爲這是價值2147483647居然是 - 它不是一個「垃圾」價值可言,它告訴你一些有用的東西。