2

に保存NSDecimalNumberするEditViewControllerと、DisplayTableViewController値が表示されますNaN

この問題を解決するには、アドバイスが必要です。ありがとう

私のコード:

- (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。

の文字列に有効な文字priceTextField.textのみが含まれていること、および有効な順序であることを確認する必要があります。特に確認する必要があるのは、ユーザーのロケールに応じて、小数点または小数点のどちらがあるかです。したがって、次の使用を検討することをお勧めします。

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