Swift iOS - 如何从另一个用户的 formatter.locale 设置一个用户的 formatter.locale
Posted
技术标签:
【中文标题】Swift iOS - 如何从另一个用户的 formatter.locale 设置一个用户的 formatter.locale【英文标题】:Swift iOS -How to set one user's formatter.locale from another user's formatter.locale 【发布时间】:2019-05-23 20:02:45 【问题描述】: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 的本地货币而不是 €
【问题讨论】:
【参考方案1】:这是一个编码错误,我发现了错误,在设置 userA 的 dataModel.localeIdentifier = Locale.current.identifier
时我有另一个函数,后来将其更改为 dataModel.localeIdentifier = Locale.current.currencySymbol
这就是为什么我得到欧元符号 €
而不是 en_FR
【讨论】:
以上是关于Swift iOS - 如何从另一个用户的 formatter.locale 设置一个用户的 formatter.locale的主要内容,如果未能解决你的问题,请参考以下文章
我可以在一个 UIViewcotroller 中设置一个 ModelClass 并使用 swift3 iOS 从另一个 UIViewCoroller 读取 ModelClass 对象吗?
使用 SWIFT 在 iOS SDK for Facebook 上使用 FBSDKGraphRequest