내 앱에서 사용자는 하나의보기에 통화 값에 대한 여러 입력 필드가 있습니다. 따라서 로캘에 따라 필드의 값이 '$ 5.00'과 같이 표시되어야합니다. 이 작동합니다.iOS : 통화 기호가없는 경우에도 NumberFormater가 이중 값을 얻습니까?
필드를 편집하려면 기본적으로 사용자가 값을 입력하고 통화 기호를 제거 할 때 문자열을 "Unlocalize"합니다. 편집 후 값은 핵심 데이터로 저장되어야합니다 (물론 통화 기호도 없음). 모든 필드를 데이터베이스에 다르게 저장해야하므로 모든 필드를 거쳐 모든 핵심 데이터 값을 작성해야합니다. 따라서 내보기의 모든 필드를 저장하려면 해당 필드를 "Unlocalize"해야합니다. 이는 편집 된 텍스트 필드를 제외한 모든 텍스트 필드에 적용됩니다. 이미 지역화되지 않은 값을 내 메소드로 보내면 0을 반환합니다. 왜? 내보기 컨트롤러의
2 개 개의 방법 :
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Done", nil) style:UIBarButtonItemStyleDone target:self action:@selector(doneEditing:)];
[self.navigationBar setRightBarButtonItem:doneButton];
if(textField.tag != 1){
//1 is the name text field
textField.text = [NSString stringWithFormat:@"%.2f",[NSNumber getUnLocalizedCurrencyDoubleWithString:textField.text]];
}
}
-(void)textFieldDidEndEditing:(UITextField *)textField
{
self.spendingCategory.name = self.nameTextField.text;
self.spendingCategory.costPerDay = [NSNumber numberWithDouble:[NSNumber getUnLocalizedCurrencyDoubleWithString:self.dailyTextField.text]];
self.spendingCategory.costPerWeek = [NSNumber numberWithDouble:[NSNumber getUnLocalizedCurrencyDoubleWithString:self.weeklyTextField.text]];
self.spendingCategory.costPerMonth = [NSNumber numberWithDouble:[NSNumber getUnLocalizedCurrencyDoubleWithString:self.monthlyTextField.text]];
self.spendingCategory.costPerSemiYear = [NSNumber numberWithDouble:[NSNumber getUnLocalizedCurrencyDoubleWithString:self.semiAnnuallyTextField.text]];
self.spendingCategory.costPerYear = [NSNumber numberWithDouble:[NSNumber getUnLocalizedCurrencyDoubleWithString:self.annuallyTextField.text]];
[self setTextFieldsWithFormat];
}
그리고 내의 NSNumber 카테고리 :
textFieldDidEndEditing가 대응되어 있지 않은에서 편집중인 텍스트 필드의 값이라고- (NSString *) getLocalizedCurrencyString
{
NSNumberFormatter *numberFormatter =[[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *numberString = [numberFormatter stringFromNumber:self];
return numberString;
}
+ (double) getUnLocalizedCurrencyDoubleWithString:(NSString *)currencyString
{
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
return [[numberFormatter numberFromString:currencyString] doubleValue];
}