从NSArray获取对象的索引?

时间:2011-09-13 07:16:37

标签: iphone ios nsarray

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

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

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

7 个答案:

答案 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"现在这将重新调整像长数字

的索引