0

私は書きます:

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

aNumber is undeclared on the line of 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 の行では、「Expected expression」という苦情が表示され、bNumber の行では、「Unknown receiver 'aNumber'; did you mean 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 に答える