NSNotFound比较不起作用

时间:2014-01-23 22:56:32

标签: ios objective-c

简单。

我正在使用indexOfObject来检查某个值是否已存在于数组中。

如果值不在数组中,indexOfObject将返回常量NSNotFound。

为什么要比较> 100000工作:

NSInteger indexOfCell = [_selectedCellIndices indexOfObject:cellIndex];

if(indexOfCell > 1000000)

但与NSNotFound的相等性失败:

NSInteger indexOfCell = [_selectedCellIndices indexOfObject:cellIndex];

if(indexOfCell == NSNotFound)

3 个答案:

答案 0 :(得分:1)

您可以使用ContainsObject:方法。可能会更容易。

答案 1 :(得分:1)

2147483647 NSNotFound(在某些情况下,也称为-1)。你是如何测试你的测试是成功还是失败的,这是有问题的,因为Cocoa本身的行为与宣传的完全一样。

NSInteger indexOfCell = [[NSArray new] indexOfObject:@""];
NSLog(@"%d", indexOfCell); // some number
NSLog(@"%d", NSNotFound); // the same number
NSLog(@"%d", indexOfCell == NSNotFound); // 1, i.e. YES

亲自试试。

答案 2 :(得分:-1)

indexOfObject假设是NSUInteger(无符号)而不是NSInteger。这可能搞砸了你的比较。尝试将类型更改为NSUInteger并再次尝试。