Я бы хотел, чтобы мое приложение iPhone позволяло вводить, отображать и хранить суммы в валюте, используя для этого символ ($, €, ₤, ¥ и т. Д.).Локализовать валюту для iPhone
Может ли NSNumberFormatter делать все, что мне нужно? Что происходит, когда пользователь переключает свою локаль, и эти суммы (доллары, иены и т. Д.) Сохраняются как NSDecimalNumbers. Я полагаю, что для того, чтобы быть в безопасности, необходимо как-то захватить локаль во время ввода, а затем символ валюты и сохранить их в моем экземпляре вместе с NSDecimalNumber ivar, чтобы они могли быть развернуты и отображены соответствующим образом по дороге, если пользователь изменит их языковой стандарт с момента создания предмета?
Извините, у меня мало опыта локализации, так что надеемся на пару быстрых указателей перед погружением. Наконец, любое понимание того, как вы обрабатываете такой вход, учитывая ограничения на клавиатурах iPhone?
Вот что я подумал. Мне любопытно, что происходит, когда пользователь меняет свой локаль после того, как someAmount был заархивирован на диск. IPhone мог бы, довольно легко, оказаться в другой стране в командировке. Если пользователю удобно пользоваться локальным языком и т. Д., Они могут изменить Locale. Что происходит, когда этот объект не имеет аналогов? Будет ли оно отображаться как «5,00 долларов США», как было создано и предназначено, или оно будет отображаться как «¥ 5», что, очевидно, имеет существенно отличную денежную оценку, но является правильно отформатированным NSDecimalNumber «5.00», когда языковой стандарт currencyFormatter - Япония. – Meltemi
Вы можете сохранить некоторый формат форматированного или неформатированного. Если вы сохраните его в форматированном виде, сумма всегда будет отражать валюту, в которой она была сделана. Если вы сохраните ее неформатированной, форматировщик просто отформатирует ее в текущей локали, но не сделает никакого преобразования! Таким образом: «$ 5,00» станет «¥ 5». То, что я делаю в своем приложении, это хранить как неформатированную валюту, так и локаль. Таким образом, я всегда уверен, что валюта отформатирована в локали, в которую она была сделана, но я также могу добавить конвертацию валюты позже. – klaaspieter
просто c/p'ing этот код, я получаю предупреждение: формат не строковый литерал и аргументы формата Могу ли я не получить это? – oberbaum