2013-10-14 21 views
1

我有NSString的類別使用此方法:NSNumberFormatter問題與numberFromString

-(NSNumber *)numberValue 
{ 
    if (!nfStr) 
    { 
     nfStr = [[NSNumberFormatter alloc] init]; 
    } 

    NSLocale *current = [NSLocale autoupdatingCurrentLocale]; 

    [nfStr setLocale:current]; 
    [nfStr setDecimalSeparator:[current objectForKey:NSLocaleDecimalSeparator]]; 
    [nfStr setGroupingSeparator:[current objectForKey:NSLocaleGroupingSeparator]]; 

    return [nfStr numberFromString:self]; 
} 

我現在的locale是它-IT(小數點分隔符 「」 分組分隔符 「」)

時我用stringFromNumber用的NSNumber 90000的NumberFormatter返回正確格式化字符串「90.000」

當一個文本框我寫的字符串「90.000」的回報的NumberFormatter零,而不是NSNumber的90000

爲什麼?

感謝

編輯: 文本字段委託

-(void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    myObject.r.qtaOm = [Trim(textField.text) numberValue]; 
} 
+0

你能後的代碼如何與文本框使用它嗎? –

+0

已發佈,是textfield delgate –

+0

即使使用textfield,它也適用於我 - 修剪宏是什麼 - 也許嘗試不用它? –

回答

2

您必須在格式化程序上設置NumberStyle

[nfStr setNumberStyle:NSNumberFormatterDecimalStyle]; 

您可以使用:

enum { 
    NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle, 
    NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle, 
    NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle, 
    NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle, 
    NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle, 
    NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle 
}; 
0

Lools喜歡你的字符串格式不correctcorrect因爲numberfromstring方法接受字符串,然後返回數字,但在你的情況90.000不是它似乎是一個有效的字符串 因此,試圖通過這樣的檢查

NSString *[email protected]"90.000"; 

再檢查它那會工作。