userA находится во Франции, они устанавливают цену на что-то € 10, и я получаю информацию о своей валюте и записываю копию их местного региона в базу данных, используя Locale.current.identifier
, что дает мне €
, и я сохраняю ее вdataModel.localeIdentifier
// when userA uploads
let formatter = NumberFormatter()
formatter.usesGroupingSeparator = true
formatter.numberStyle = .currency
formatter.locale = Locale.current
formatter.numberStyle = NumberFormatter.Style.currency
// save their Locale.current.identifier to the db
dataModel.localeIdentifier = Locale.current.identifier
userB находится в Великобритании, они видят, что пользователь A опубликовал, и, возможно, они хотят купить 2 из них за 20 евро, что означает, что я должен удалить символ евро, сделать некоторые вычисления, затемдобавьте символ евро позже.Вместо того, чтобы вручную добавлять его обратно, я просто хочу использовать dataModel.localeIdentifier
от userA и установить его в форматер, который использует userB.Таким образом, символ евро будет отображаться на новой сумме 20
Вместо использования Locale.current.identifier пользователя B, который будет показывать фунты, я хочу, чтобы он отображал символ евро.Я пробовал это, но это не работает
// userB
let amount = updatedAmount(amount: 20) // strips away the € sign and just uses the Double
let formatter = NumberFormatter()
formatter.usesGroupingSeparator = true
formatter.numberStyle = .currency
// identifierFromUserA is €
let identifierFromUserA = dataModel.localeIdentifier // this isn't nil because I'm force unwrapping it below
let localeFromUserA = Locale(identifier: identifierFromUserA!)
// *** after setting userB's formatter.locale to the one from localeFromUserA I'm still getting the local currency instead of the € ***
formatter.locale = localeFromUserA
formatter.numberStyle = NumberFormatter.Style.currency
// this should now show €20
let newAmount = formatter.string(from: NSNumber(value: amount))
Проблема в том, что после установки userterB.locale для localeFromUserA я все еще получаю местную валюту userB вместо €