2 ooomiao oOOMIAO 于 2013.01.22 13:40 提问

获取NSArray中对象的指针

我正在努力通过indexOfObject 方法获取数组的指针,但是得到的数值总是不对,比如我有一个数组{57,56,58..}然后我想获取56的指针:

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

然后我就得到了2323421这样奇怪的结果,哪里出错了呢?谢谢大家的不吝赐教。

2个回答

loFataMer
loFataMer   2013.01.22 16:02
已采纳

indexOfObject得到的指针是匹配对象的第一个指针,而等式需要isEqual方法检测。
你获得的奇怪的结果应该是等价于NSNotFound
测试Aindex,你需要的数字可能不在数组内:

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

或者确定数组值:

NSLog(@"%@", myArray);
oOOMIAO
oOOMIAO o是这样,多谢^
接近 5 年之前 回复
langyufei
langyufei 方法是对的,但是需要注意的是indexOfObject:返回找到的所有结果中坐标数最小的值,也就是说如果你的数组中有多个56,比如index是3,4,8,10,那结果永远只能是3.
接近 5 年之前 回复
garaster
garaster   2013.01.22 14:26
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);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!