如果语句检查NSArray大小

时间:2014-07-01 09:26:26

标签: ios objective-c nsarray

我有一个if语句,用于检查indice是否小于数组的结尾。 当“i”的值为-1时,这不起作用。

NSMutableArray *myArray = [NSMutableArray array];
[myArray addObject:@"coucou"];

int i = -1;

// Not working
if (i < ([myArray count] - 1) ){
    NSLog(@" first ok ");
}

// Fix
int count = [myArray count] - 1;
if ( i < count ){
    NSLog(@" second ok ");
}

这是我需要做的才能使它工作(相同的算法,但使用中间变量来存储数组的大小) 谁知道为什么?

3 个答案:

答案 0 :(得分:3)

[myArray count]返回一个NSUInteger,它是一个无符号整数值。

当您将无符号整数与有符号整数进行比较时,有符号整数将转换为无符号整数,因此值i现在不是负数。

查看here了解更多信息。

答案 1 :(得分:0)

您正在将带符号的整数与int进行比较,这就是为什么会发生这种情况使用NSUInteger而不是int。 它肯定会起作用

答案 2 :(得分:0)

[myArray count]它返回你需要保留这两个

中的无符号长值
((NSInteger)[myArray count] - 1) OR ((int)[myArray count] - 1)