我试图通过 indexOfObject 方法获取数组的索引,但是当我尝试记录该值以测试索引时,我得到一个垃圾值..出于测试目的,我有一个值为{57,56,58..}
的数组,以获取指数56
,
NSNumber *num = [NSNumber numberWithInteger:56];
NSInteger Aindex = [myArray indexOfObject:num];
NSLog(@" %d",Aindex);
我得到的价值就像2323421
。我可能做错了什么?
答案 0 :(得分:143)
indexOfObject
返回的索引将是您的对象出现的第一个索引。使用isEqual
方法测试平等性
您获得的垃圾值可能等于NSNotFound
尝试对其进行anIndex
测试。您要查找的数字可能不在您的数组中:
NSNumber *num=[NSNumber numberWithInteger:56];
NSInteger anIndex=[myArray indexOfObject:num];
if(NSNotFound == anIndex) {
NSLog(@"not found");
}
或记录数组的内容以确保:
NSLog(@"%@", myArray);
答案 1 :(得分:39)
民间,
当在数组中找不到对象时,indexOfObject方法不返回'garbage'值。如果找不到该项,则许多系统返回-1的索引。
但是,在IOS上 - 因为indexOfObject返回UNSIGNED int(又名NSUInteger),返回的索引必须大于或等于零。由于'zero'是一个有效的索引,因此无法向调用者指示找不到该对象 - 除非返回一个我们都可以测试的约定的常量值。这个常数一致的值称为NSNotFound。
方法:
- (NSUInteger)indexOfObject:(id)anObject;
如果对象不在数组中,将返回NSNotFound。 NSNotFound是一个非常大的POSITIVE整数(通常为1减去平台上的最大int)。
答案 2 :(得分:6)
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);
它给出正确的输出,可能是你在你的数组中存储对象时做错了。
答案 3 :(得分:5)
试试这个:
NSArray的indexOfObject:
方法。如下:
NSUInteger fooIndex = [someArray indexOfObject: someObject];
答案 4 :(得分:1)
如果你正在使用Swift和选项,请确保它们已被打开。您无法搜索作为选项的对象的索引。
答案 5 :(得分:0)
我刚刚检查过。它对我来说很好。检查您的阵列是否具有特定编号。如果元素不存在,它将返回这样的垃圾值。
答案 6 :(得分:0)
indexOfObject methord将获取该数组中相应字符串的索引,如果该字符串类似于@" Test"你会发现像@" TEST"现在这将重新调整像长数字
的索引