2011-08-22 133 views
0

[measureValue stringValue]給了我這樣的例外:的NSNumber:stringValue的崩潰,說明工作

終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是: ' - [NSCFString stringValue的]:無法識別的選擇發送到實例0x4dde570'

[measureValue description]作品完美

但我想我應該用在代碼stringValue,對不對?

這是代碼:

NSNumber *measureValue = [NSString stringWithFormat:@"%i", [cellContent integerValue]]; 

//if imperial (inches) 
if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"Measure"] isEqualToString:@"Imperial"]) { 

    //if height 
    if ([currentQuestion isEqualToString:@"Height"]) { 
     measureValue = [NSNumber numberWithDouble:(2.54 * [measureValue doubleValue])]; 
    //elseif weight 
    } else { 
     measureValue = [NSNumber numberWithDouble:(0.45359237 * [measureValue doubleValue])]; 
    } 

    //NSLog(@"%@", [measureValue stringValue]); 
    cellContent = [measureValue description]; 
+4

由於NSString沒有響應stringValue,它崩潰了。爲什麼你將measureValue設置爲一個字符串?將其設置爲一個NSNumber。 – Allyn

+4

而你忽略了編譯器有關不兼容指針類型的警告原因? –

回答

10
NSNumber *measureValue = [NSString stringWithFormat:@"%i", [cellContent integerValue]]; 

即行返回一個NSString,而不是一個NSNumber。你正在向NSString發送stringValue。