0

我写:

NSNumber *aNumber = [NSNumber numberWithInt: 0];
NSNumber *bNumber = [NSNumber numberWithInt: [aNumber intValue] + 5];

为什么我会收到一条警告说 aNumber 在 bNumber 行上未声明?

编辑:

这些代码:

    NSNumber *aNumber = [NSNumber numberWithInt: 0];
    NSNumber *bNumber = [NSNumber numberWithInt: [aNumber intValue] + 5];
    return [NSString stringWithFormat:@"%ld", (long)bNumber];

在方法中使用:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

在 aNumber 行,我收到投诉“预期表达式”,在 bNumber 行,我收到“Unknown receiver 'aNumber';您的意思是 NSNumber”吗?为什么呢?

编辑2:

switch (component){ 
    case 0: 
        NSNumber *aNumber = [NSNumber numberWithInt: 0]; 
        NSNumber *bNumber = [NSNumber numberWithInt: [aNumber intValue] + 5]; 
        return [NSString stringWithFormat:@"%ld", (long)bNumber]; 
        break; 
    case 1: 
        //....
    break; 
    case 2: 
        //....
    break; 
}

我怀疑我不能在 switch 语句中声明任何内容?

4

2 回答 2

3

“预期表达式”错误通常是由之前行中的一些语法缺陷引起的。查看 aNumber 行上方的行。如果您无法识别错误,或者与我们分享这些行。

编辑:感谢您的编辑。在这种情况下,答案是您不能在 switch/case 语句中声明变量。它应该以这种方式工作:

NSNumber *aNumber;
NSNumber *bNumber;
switch (component){ 
    case 0: 
        aNumber = [NSNumber numberWithInt: 0]; 
        bNumber = [NSNumber numberWithInt: [aNumber intValue] + 5]; 
        return [NSString stringWithFormat:@"%ld", (long)bNumber]; 
        break; 
    case 1: 
        //....
    break; 
    case 2: 
        //....
    break; 
}

如果您确实需要在 case-branch 范围内声明它们,那么您必须将程序从 switch/case 更改为 if 子句。在 if 子句的主体中,您可以轻松地声明局部变量。

于 2012-12-19T10:10:32.420 回答
0

您可以使用此代码

NSLog(@"Value : %@",[self convert]);

-(NSString*)convert
{
    NSNumber *aNumber = [NSNumber numberWithInt: 0];
    NSNumber *bNumber = [NSNumber numberWithInt: [aNumber intValue] + 5];
    return [NSString stringWithFormat:@"%ld", (long)([bNumber longValue])];
}

谢谢

于 2012-12-19T10:04:55.637 回答