2012-12-19 44 views
0

我寫:Objective-C NSNumber - 未聲明的標識符?

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

爲什麼我得到這樣的警告,說aNumber的是在B-號碼的未申報行?

編輯:

這些代碼:

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的線,我得到投訴 「預期表達」 和在B-號碼行,我得到「未知的接收器'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語句裏面什麼?

+3

這個編譯完全適合我。 – dasblinkenlight

+1

我也是,我對此代碼沒有任何問題 –

+0

完美地打印出結果「bNumber 5」 – laxonline

回答

3

「預期的表達」錯誤是非常ofthen由前線(S)的一些語法的缺陷造成的。查看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; 
} 

如果你確實需要的情況下,分支的範圍之內宣佈他們,那麼你就必須你的程序開關/箱改爲if引導的從句。在if子句的內部,您可以輕鬆聲明局部變量。

+0

我已添加編輯,請閱讀。 – GourmetFan

+0

謝謝你澄清這個問題! :) – GourmetFan

+0

請注意,'stringWithFormat'行仍然存在錯誤。將'NSNumber * bNumber'轉換爲'long'不會產生預期結果。你必須使用'[bNumber longValue]'(如在Mohd Kalimullah Sheikh的回答中)。 –

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])]; 
} 

感謝

+0

您沒有使用完全相同的代碼,因爲您在數字行中從0更改爲10,並且它被稱爲「無法獲得錯誤」:P – GourmetFan

+0

不,我在將iPhone應用程序和Mac應用程序中的0值放入後檢查說 –

+0

你想分享你的屏幕截圖 –