2012-03-20 34 views
0

我正在建設的應用程序有可能「下載」文本文件,並從那裏得到的數字。在模擬器中一切正常,但是當我在設備上測試它時,它剛剛崩潰。過了一段時間,我發現問題出在小數點分隔符上。在該文件中,我使用.,我的iPhone的本地設置需要,。該字符串的例子:NSString與NSNumber與一些小數分隔符

Product 1;100.00 
Product 2;82.85 
Product 3;95.12 
//etc... 

的前幾個.變更爲,後,我能成功運行應用程序,直到它達到第一.,所以這就是問題所在。

我可以很容易地更換所有.,編程,我想這個程序,在任何國家的工作與任何數字格式,它不侷限於某些特定市場。

的代碼我用得到這些數字:

NSString *fileContents = [[NSUserDefaults standardUserDefaults]objectForKey:theKey]; 
NSArray *allLinedStrings = [fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 
NSMutableArray *allStringNormalized = [NSMutableArray array]; 
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
for (int i = 0; i < allLinedStrings.count; i++) { 
    NSString *bla = [allLinedStrings objectAtIndex:i]; 
    NSArray *bla1 = [bla componentsSeparatedByString:@";"]; 
    [allStringNormalized addObject:[formatter numberFromString:[bla1 objectAtIndex:1]]]; 
} 
self.values = [NSArray arrayWithArray:allStringNormalized]; 

任何幫助,將不勝感激。

謝謝:)

回答

3

如果我理解正確的問題,你想NSNumberFormatter始終使用.作爲小數點分隔符,無論手機的語言環境。解決方案很簡單:使用NSNumberFormatter的實例方法和setCurrencyDecimalSeparator:將小數點分隔符設置爲.

請注意,您不需要設置兩個小數點分隔符。如果您的numberStyleNSNumberFormatterDecimalStylesetCurrencyDecimalSeparator:,並且您的numberStyleNSNumberFormatterCurrencyStyle,則使用。

有關更多詳細信息,請參見the documentation

+0

謝謝,這幾乎是我一直在尋找。雖然我希望找到一種方法來使用不同的分隔符(如果一個字符串使用'.',其他使用',') – Novarg 2012-03-20 08:47:32

+0

您可以在文件上運行自動檢測。如果你知道它將會是。或者,然後看看哪一個存在並使用那個。 – freespace 2012-03-20 09:12:37