it-swarm.cn

从NSArray获取对象的索引?

我试图通过 indexOfObject 方法获取数组的索引如下,但当我尝试记录该值以测试索引时,我得到一个垃圾值..为了测试目的,我有一个数值为{57,56,58..}的数组一个索引让我们说56

NSNumber *num = [NSNumber numberWithInteger:56];
NSInteger Aindex = [myArray indexOfObject:num];
NSLog(@" %d",Aindex);

我得到的价值就像2323421。我可能做错了什么?

65
hemant

indexOfObject返回的索引将是您的对象出现的第一个索引。使用isEqual方法测试平等性。
你得到的垃圾值可能等于NSNotFound
尝试对它进行anIndex测试。您要查找的数字可能不在您的数组中:

NSNumber *num=[NSNumber numberWithInteger:56];
NSInteger anIndex=[myArray indexOfObject:num];
if(NSNotFound == anIndex) {
    NSLog(@"not found");
}

或者记录数组的内容以确保:

NSLog(@"%@", myArray);
142
user866214

伙计们,

当在数组中找不到对象时,indexOfObject方法不返回'garbage'值。如果找不到该项,则许多系统返回-1的索引。

但是,在IOS - 因为indexOfObject返回UNSIGNED int(又名NSUInteger),返回的索引必须大于或等于零。由于'zero'是一个有效的索引,因此无法向调用者指示找不到该对象 - 除非返回一个我们都可以测试的约定的常量值。这个常数一致的值称为NSNotFound。

方法:

- (NSUInteger)indexOfObject:(id)anObject;

如果对象不在数组中,将返回NSNotFound。 NSNotFound是一个非常大的POSITIVE整数(通常为1减去平台上的最大int)。

39
joe
NSNumber *num1 = [NSNumber numberWithInt:56];
    NSNumber *num2 = [NSNumber numberWithInt:57];
    NSNumber *num3 = [NSNumber numberWithInt:58];
    NSMutableArray *myArray = [NSMutableArray arrayWithObjects:num1,num2,num3,nil];
    NSNumber *num=[NSNumber numberWithInteger:58];

    NSInteger Aindex=[myArray indexOfObject:num];

    NSLog(@" %d",Aindex);

它给出正确的输出,可能是你在你的数组中存储对象时做错了。

6
iCoder4777

试试这个:

NSArray的indexOfObject:方法。如下:

NSUInteger fooIndex = [someArray indexOfObject: someObject];
5
svmrajesh

如果你正在使用Swift和选项,请确保它们已被打开。您无法搜索作为选项的对象的索引。

1
Josh O'Connor

indexOfObject methord将获取该数组中相应字符串的索引,如果该字符串类似于@“Test”,你会发现像@“TEST”现在这将返回一个索引,就像一个长号

0
Jayasabeen

我刚刚检查过它对我来说很好。检查您的阵列是否具有特定编号。如果元素不存在,它将返回这样的垃圾值。

0
visakh7