내 앱을 테스트하고 있습니다. 로케일을 독일로 변경하는 경우를 제외하고 모두 정상적으로 작동합니다.iphone 앱에서 현지화 된 통화
기본적으로 현지 통화로 2 개의 값을 입력하면 계산이 수행되고 사용자는 정보를 다시 가져옵니다.
숫자 입력은 잘 처리됩니다. 즉, "편집 완료"에 해당하는 숫자를 현지 통화로 변환하는 메소드가 실행됩니다. 따라서 미국 사용자가 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 달러 (또는 다른 통화)에서 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;
}
어떤 이유로 미국, 영국, 일본 및 아일랜드 로캘은 괜찮습니다.
유럽 대륙 국가가 작동하지 않습니다.
이 문제를 해결하는 방법에 대한 조언은 유용 할 것입니다.