2

保存NSDecimalNumberEditViewController,出现 inDisplayTableViewControllerNaN

请需要建议来解决此问题。谢谢

我的代码:

- (IBAction)saveChanges:(id)sender {
    editGift.nameOfGift = nameTextField.text;
    editGift.priceOfGift = [NSDecimalNumber decimalNumberWithString:priceTextField.text];

    AppDelegate *myApp = (AppDelegate *) [[UIApplication sharedApplication]delegate];
    [myApp saveContext];
    [self.delegate editGiftViewControllerDidSave:self];
}

请看视频解释

输入值:

currencyFormatter = [[NSNumberFormatter alloc]init]; 

[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

 personGift.priceOfGift = [NSDecimalNumber decimalNumberWithString:priceTextField.text];
4

2 回答 2

4

您的代码不清楚何时应用货币格式,但鉴于您的视频,文本字段的值很可能是“$6,000”。那不是一个数字(因此是“NaN”)。

于 2012-12-19T15:06:02.850 回答
2

NSDecimalNumber文档说:

除了数字之外,numericString 还可以包含开头的“+”或“-”;单个“E”或“e”,以科学计数法表示数字的指数;和一个单独的 NSDecimalSeparator 用于将小数部分与数字的整数部分相除。

您必须验证 in 中的字符串是否priceTextField.text仅包含有效字符- 并且顺序有效。特别要检查的一件事是您是否有小数点或小数点逗号,具体取决于用户区域设置。因此,您可能需要考虑使用:

+ (NSDecimalNumber *)decimalNumberWithString:(NSString *)numericString
locale:(NSDictionary *)locale
于 2012-12-19T15:08:01.940 回答