我正在測試我的應用。除了當我將語言環境更改爲德國時,所有工作都正常。本地化iphone應用貨幣
基本上你用你的本地貨幣輸入2個值,計算髮生,用戶獲得信息。
用戶數字輸入處理得很好。也就是說,在「Editing Did End」上執行一個方法,將該數字轉換爲等值的本地貨幣。所以如果美國用戶輸入10000,他們將被退回$ 10,000.00。代碼如下:
- (NSMutableString *) formatTextValueToCurrency: (NSMutableString *) numberString {
NSNumber *aDouble = [NSNumber numberWithFloat: [numberString floatValue]];
NSMutableString *aString = [NSMutableString stringWithCapacity: 20];
NSLocale *theLocale;
NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];
[currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];
[currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];
theLocale = [NSLocale currentLocale];
[currencyStyle setLocale: theLocale];
[aString appendString: [currencyStyle stringFromNumber:aDouble]];
[currencyStyle release];
return aString;
}
但是,當我想處理上述貨幣值以獲取用戶他/她的信息時發生問題。也就是說,應用程序現在需要從$ 10,000.00(或任何貨幣)中獲得10000以發送到計算方法中。這裏是代碼:
- (float) getValueFromCurrency: (id) sender {
NSNumber *aDouble = [NSNumber numberWithFloat: 0.0];
UITextField *textField = (UITextField *) sender;
NSMutableString *aString= [NSMutableString stringWithCapacity: 20];
NSLocale *theLocale;
float result;
NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];
[currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];
[currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];
theLocale = [NSLocale currentLocale];
[currencyStyle setLocale: theLocale];
NSLog(@"The locale is %@", currencyStyle.locale.localeIdentifier);
//Above NSLog looks good because it returns de_DE
[aString appendString: textField.text];
//The append from text field to string is good also
aDouble = [currencyStyle numberFromString: aString];
//For some reason, nil is returned
result = [aDouble floatValue];
[currencyStyle release];
return result;
}
由於某些原因,美國,英國,日本和愛爾蘭的語言環境都很好。
歐洲大陸國家無法使用。
任何關於如何解決這個問題的建議將會很棒。