Swift iOS - Как установить formatter.locale одного пользователя из formatter.locale другого пользователя - PullRequest
0 голосов
/ 23 мая 2019

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 вместо €

1 Ответ

0 голосов
/ 23 мая 2019

Это была ошибка кодирования, я обнаружил ошибку, когда устанавливал для пользователя A dataModel.localeIdentifier = Locale.current.identifier У меня была другая функция, которая позже изменила ее на dataModel.localeIdentifier = Locale.current.currencySymbol, поэтому я получал символ евро вместо en_FR

...