从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
进行anIndex
testing。 你正在寻找的数字可能不在你的数组中:
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”那么现在这将会像一个长数字