hem*_*ant 66 iphone nsarray ios
我试图通过indexOfObject方法获取数组的索引,如下所示,但当我尝试记录该值以测试索引时,我得到一个垃圾值..为了测试目的,我有一个数组的值,{57,56,58..}以获得索引让我们说56,
NSNumber *num = [NSNumber numberWithInteger:56];
NSInteger Aindex = [myArray indexOfObject:num];
NSLog(@" %d",Aindex);
Run Code Online (Sandbox Code Playgroud)
我得到的价值就像2323421.我可能做错了什么?
小智 143
返回的索引indexOfObject将是您的对象出现的第一个索引.使用isEqual方法测试平等性.
你得到的垃圾值可能等于NSNotFound.
尝试anIndex对它进行测试.您要查找的数字可能不在您的数组中:
NSNumber *num=[NSNumber numberWithInteger:56];
NSInteger anIndex=[myArray indexOfObject:num];
if(NSNotFound == anIndex) {
NSLog(@"not found");
}
Run Code Online (Sandbox Code Playgroud)
或者记录数组的内容以确保:
NSLog(@"%@", myArray);
Run Code Online (Sandbox Code Playgroud)
小智 39
伙计们,
当在数组中找不到对象时,indexOfObject方法不返回'garbage'值.如果找不到该项,则许多系统返回-1的索引.
但是,在IOS上 - 因为indexOfObject返回UNSIGNED int(又名NSUInteger),返回的索引必须大于或等于零.由于"零"是一个有效的索引,因此无法向调用者指示找不到该对象 - 除非返回一个我们都可以测试的约定的常量值.这个常数一致的值称为NSNotFound.
方法:
- (NSUInteger)indexOfObject:(id)anObject;
Run Code Online (Sandbox Code Playgroud)
如果对象不在数组中,将返回NSNotFound.NSNotFound是一个非常大的POSITIVE整数(通常为1减去平台上的最大int).
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);
Run Code Online (Sandbox Code Playgroud)
它给出正确的输出,可能是你在你的数组中存储对象时做错了.
试试这个:
NSArray的indexOfObject:方法.如下:
NSUInteger fooIndex = [someArray indexOfObject: someObject];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90993 次 |
| 最近记录: |