0
在我的應用程序中,用戶在一個視圖中有多個輸入字段用於貨幣值。因此,根據區域設置,字段中的值應該顯示爲「$ 5.00」。這工作。iOS:NumberFormater,即使沒有貨幣符號,也會獲得雙倍的價值?
爲了編輯字段,我基本上在用戶輸入一個值並刪除貨幣符號時將字符串「Unlocalize」。編輯之後,值應該保存(當然也沒有貨幣符號)爲核心數據。由於所有字段都需要以不同方式保存到數據庫中,因此我必須通過doverwrite所有核心數據值的所有字段。所以我必須「將我的觀點的所有領域」取消本地化以拯救它們。這適用於除編輯之外的所有文本字段。如果我將這個已經非本地化的值發送給我的方法,它只返回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類別:
- (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];
}