一部のアイテムの入力費用を正しく処理しようとしています。したがって、コンマ区切りの小数を使用するロケールを使用してデバイスで作業する場合 (小数点パッドは、ユーザーが入力するドット '.' の代わりにコンマ ',' を自動的に設定します)、コア データを使用して値を double 変数に格納します。このようにテキスト:
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setMaximumFractionDigits:2];
NSNumber * gasto = [f numberFromString:(((UITextField*) [cell viewWithTag:11]).text)];
destino.nuevaTrans.gasto = [gasto doubleValue];
//destino.nuevaTrans is the managed object, nothing weird there, just storing the decimal value
しかし、格納されたオブジェクトから値を取り出してテーブル ビューで表示すると、コンマ区切りのロケール設定 (?) が原因で小数点以下が失われます。このようにします:
etiq = (UILabel*) [cell.contentView viewWithTag:12];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
etiq.text = [numberFormatter stringFromNumber:@(trans.gasto)];
//debugging console output:
//remmember, trans.gasto is only a double
NSLog(@"a: %f, b: %@", trans.gasto ,[numberFormatter stringFromNumber:@(trans.gasto)]);
ドット「。」を使用しているシミュレーターの出力。ロケール設定は正常に機能しますが、カンマ「,」設定を使用しているデバイスにデプロイする場合、NSNumberFormatter はそれを通貨スタイルに正しく変換していないようです。
//output on the simulator:
2014-09-07 15:00:47.561 iSpend[3930:60b] a: 2.990000, b: $2.99
//output on the device:
2014-09-07 15:02:40.005 iSpend[1389:60b] a: 2.170000, b: ₡2
だから、私はこれを試してみることができます...しかし、私はここでより良いプログラミングの練習を探しています. すべての提案をいただければ幸いです。ありがとう!