检查对象是否存在于Array中的问题?

时间:2011-04-19 10:37:28

标签: objective-c nsmutablearray

这里我试图在数组中添加对象并检查对象是否存在于数组中。因为我使用以下代码..

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

这里我认为我做对了..首先我要检查索引。如果它是> = 0我将删除对象,否则添加一个新对象。

我的问题是,如果找不到对象的索引,它会为我的整数变量分配一个垃圾值。我想它应该是-1,但它不是我的下一行,我将删除对象抛出错误。

ind = 2147483647

任何帮助......

2 个答案:

答案 0 :(得分:9)

Official Documentation可能会有所帮助。

简而言之,如果指定的对象不在数组中,indexOfObject:将返回常量NSNotFoundNSNotFound常量的值为0x7FFFFFFF,小数等于2147483647。

如果您这样做,您的代码应该正常运行:

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

答案 1 :(得分:7)

如果你以后不需要ind的值,你可以写;

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

或者不是测试ind> = 0,而是使用

if (ind != NSNotFound) { ...

因为这就是2147483647实际上的值 - 它根本不是一个“垃圾”值,它告诉你一些有用的东西。