从NSArray获取对象的索引?

我试图通过indexOfObject方法获取数组的索引,但是当我尝试logging值来testing索引时,我得到一个垃圾值..为了testing的目的我有一个数组值{57,56,58..}得到一个可以说56的索引,

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

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

indexOfObject返回的索引将成为您的对象的第一个索引。 平等使用isEqual方法进行testing。
你得到的垃圾值可能等于NSNotFound
尝试anIndex进行anIndextesting。 你正在寻找的数字可能不在你的数组中:

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

或者logging数组的内容以确保:

 NSLog(@"%@", myArray); 

伙计们,

当在数组中找不到对象时,indexOfObject方法不会返回“垃圾”值。 如果找不到该项目,许多系统将返回索引-1。

但是,在IOS上 – 因为indexOfObject返回一个UNSIGNED int(又名NSUInteger),返回的索引必须大于或等于零。 由于“零”是一个有效的索引,所以没有办法向调用者指示该对象没有被find – 除了返回一个我们都可以testing的商定的恒定值。 这个恒定的价值被称为NSNotFound。

方法:

 - (NSUInteger)indexOfObject:(id)anObject; 

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

 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); 

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

尝试这个:

NSArray的indexOfObject:方法。 如下所示:

 NSUInteger fooIndex = [someArray indexOfObject: someObject]; 

如果你正在使用Swift和可选项,确保它们被解包。 您不能search可选对象的索引。

我刚刚检查。 它为我工作很好。 检查你的数组是否有特定的编号。 如果元素不存在,它将返回这样的垃圾值。

indexOfObject方法将得到该数组中对应string的索引,如果该string像@“Test”,并且您find像@“TEST”那么现在这将会像一个长数字