简单。
我正在使用indexOfObject来检查某个值是否已存在于数组中。
如果值不在数组中,indexOfObject将返回常量NSNotFound。
为什么要比较> 100000工作:
NSInteger indexOfCell = [_selectedCellIndices indexOfObject:cellIndex];
if(indexOfCell > 1000000)
但与NSNotFound的相等性失败:
NSInteger indexOfCell = [_selectedCellIndices indexOfObject:cellIndex];
if(indexOfCell == NSNotFound)
答案 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并再次尝试。