Objective c NSMUTABLEARRY indexOfObject返回一个非常大的数字

Objective c NSMUTABLEARRY indexOfObject返回一个非常大的数字,objective-c,ios,nsmutablearray,Objective C,Ios,Nsmutablearray,我有一个NSMutableArray返回一个非常大的索引 po [masterArray count] < returns "2" NSUInteger theIndex = [masterArray indexOfObject:validateEnrollmentStatus]; po[masterArray count]

我有一个NSMutableArray返回一个非常大的索引

po [masterArray count] < returns "2"

NSUInteger theIndex = [masterArray indexOfObject:validateEnrollmentStatus];
po[masterArray count]<返回“2”
NSUInteger theIndex=[masterArray indexOfObject:ValidateRollmentStatus];
上面返回的整数是“2147483647”?我不确定这是怎么可能的,或者正在发生什么?如果在调试控制台中调用count方法,则masterArray必须打开项


有人有什么建议吗?

这是
NSNotFound
的值。这意味着您要查找的对象不在数组中。

像这样尝试<代码>验证滚动状态不存在于
主阵列
中。因此,在尝试获取
indexOfObject
之前,您可能需要添加一个检查

    NSUInteger theIndex = 0;

    if ([masterArray containsObject:validateEnrollmentStatus]) {
        theIndex = [masterArray indexOfObject:validateEnrollmentStatus];
    } else {
        NSLog(@"%@ is not present in masterArray", validateEnrollmentStatus);
    }

简单地调用IndexOfoObject并检查结果会更有效。一个查找和两个查找。我不认为如果只调用IndexOfoObject会更有效。如果是这样的话,苹果就永远不会制造一个“containsObject”方法,也没有人会正确使用它?即使检查NSNotFound,也需要相同的行数才能实现,这两种方法都需要在数组中搜索对象。如果对象存在并且恰好是最后一个对象,则结束对阵列的两次完整扫描<代码>容器对象有它的位置。但是对于这个,只需调用
indexOfObject:
并检查结果,它返回-1。但由于整数是无符号的,-1实际上是2147483647。这就是为什么使用常量
NSNotFound
。的可能重复项