アプリに通貨入力フィールドを用意して、ユーザーが通貨記号を (ロケールに応じて) 含めるか、含めないかを自由に選択できるようにしたいと考えています。
テキスト フィールドを設定し、値を NSDecimalNumber に格納しています (これは、通貨を格納するための推奨される方法であると理解しています)。
次のコードは、NSDecimalNumber から書式設定された通貨文字列に変換します。
[NSNumberFormatter localizedStringFromNumber:currencyValue numberStyle:NSNumberFormatterCurrencyStyle]
しかし、その逆を行う方法が見つかりません。つまり、ユーザーがテキスト フィールドに入力した文字列を (可能であれば) NSDecimalNumber に変換します。通貨記号がそこにある (上記の関数から来たため) か、そうでない (ユーザーがわざわざ通貨記号を入力しなかったため) 可能性があることに注意してください。
私は何が欠けていますか?
これがわからない場合は、通貨記号をまったく受け入れません (つまり、以下のコードを使用して解析するだけです)。しかし、通貨記号を許可した方がよさそうです。
[NSDecimalNumber decimalNumberWithString:currencyString locale:[NSLocale currentLocale]]
私は何かが欠けていると感じています。ローカライズされた通貨文字列と NSDecimalNumber の間で相互に変換する正しい方法は何ですか?