1

伙计们,我做错了什么?

if (numberstring.intValue <=15) {
    rankLabel.text = @"A1";
}
else if (numberstring.intValue >16 && <=40){       
    rankLabel.text = @"A2";
}

我在“<=40”上收到错误..

4

2 回答 2

5

你错过了一个变量引用:

if (numberstring.intValue <=15) {
    rankLabel.text = @"A1";
}                                  //        vv here vv
else if (numberstring.intValue >16 && numberstring.intValue <= 40){       
    rankLabel.text = @"A2";
}

作为一个可选的附加项,它看起来像是numberstring一个NSString对象,您反复将其转换为整数以测试各种范围。该操作非常昂贵,因此最好进行一次转换:

int value = [numberstring intValue];
if (value <=15) {
    rankLabel.text = @"A1";
}
else if (value >16 && value <= 40){       
    rankLabel.text = @"A2";
}

另请注意,该intValue方法不是属性,因此我将避免使用 Objective-C 2.0 点语法来访问它并使用正常的方法调用机制。

于 2012-09-18T15:36:48.113 回答
2

运算符将&&两个子句链接在一起。但是,每个子句都是独立的,因此如果删除另一个子句,则每个子句都必须在语法上正确。如果将此规则应用于您的条件,您会发现"<=40"它本身在语法上是不正确的。因此,您需要引用正在比较的值,如下所示:

if (numberstring.intValue > 16 &&
    numberstring.intValue <= 40)    // this is syntactically correct on its own
于 2012-09-18T15:45:41.683 回答