Swift iOS - 如何将一个用户的 formatter.locale 设置为另一个用户的 formatter.locale

Swift iOS -How to set one user's formatter.locale from another user's formatter.locale

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 在英国,他们看到了 userA 发布的内容,也许他们想以 20 欧元的价格购买其中的 2 个,这意味着我必须删除欧元符号,进行一些计算,然后稍后再添加欧元符号.我只想使用 userA 的 dataModel.localeIdentifier 并将其设置为 userB 使用的格式化程序,而不是手动将其追加回去。这样欧元符号就会出现在新的金额 20

我希望它显示欧元符号,而不是使用 userB 的 Locale.current.identifier 来显示英镑。我试过了,但没用

// 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))

问题是在将 userB 的 formatter.locale 设置为 localeFromUserA 之后我仍然得到 userB 的本地货币而不是 €

这是一个编码错误,我发现了错误,在设置用户 A 的 dataModel.localeIdentifier = Locale.current.identifier 时我有另一个函数后来将其更改为 dataModel.localeIdentifier = Locale.current.currencySymbol 这就是为什么我得到欧元符号 而不是 en_FR