如何解决将语言环境存储到 CoreData Swiftui
我想将 Locale 存储到 Core Data 中,我可以将它分配给列表项。因此,当用户更改区域设置时,原始货币的格式等不会受到更改的影响,因此应用程序仍然可以运行。
我认为这会很有用,即使用户通常不会经常更改区域。
我已经使用当前区域设置定义了一个货币格式化程序:
var currencyFormatter: NumberFormatter = {
let formatter = NumberFormatter()
formatter.usesGroupingSeparator = true
formatter.numberStyle = .currency
formatter.locale = Locale.current
return formatter
}()
我有一个函数可以使用这个函数。格式化货币和 b。剥离它进行处理:
func formatCurrency(text: String,edit: Bool,currencyCode: String) -> String {
if(!edit && text.count > 0) {
let myDouble = (text as Nsstring).doubleValue
let myNumber = NSNumber(value:myDouble)
let priceString = currencyFormatter.string(from: myNumber) ?? "0.00"
print(priceString)
return priceString
} else {
let myDouble = (text as Nsstring).doubleValue
let myNumber = NSNumber(value:myDouble)
let returnValue = currencyFormatter.number(from: text) ?? myNumber
if(returnValue == 0){
return ""
}
return returnValue.stringValue
}
}
我尝试将 Core Data 中的“currencyFormatter.currencyCode”保存为文本,这是可行的,但是因为您需要考虑十进制符号和分隔符等。这变得很笨拙,因为有很多参数。以下是一些:
print("currencyDecimalSeparator - " + currencyFormatter.currencyDecimalSeparator)
print("currencySymbol - " + currencyFormatter.currencySymbol)
print("currencyGroupingSeparator - " + currencyFormatter.currencyGroupingSeparator)
print("internationalCurrencySymbol - " + currencyFormatter.internationalCurrencySymbol)
print("currencyCode - " + currencyFormatter.currencyCode)
print("decimalSeparator - " + currencyFormatter.decimalSeparator)
我想要一种存储 Locale.current
的简洁方式,以便在访问特定列表项时可以将其分配回来。
谢谢, 艾蒂安
解决方法
谢谢各位。
解决方法如下:
-
我在 Core Data 中针对我用来填充
List
的实体存储了区域设置标识符:@State var localeIdentifier = Locale.current.identifier
-
当我想格式化货币时,我使用存储的标识符为我的格式化程序启动一个新的语言环境:
currencyFormatter.locale = Locale.init(identifier: localeIdentifier)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。