swift - 将语言环境存储到 CoreData Swiftui
问题描述
我想将语言环境存储到核心数据中,我可以将其分配给列表项。因此,当用户更改区域设置时,原始货币等的格式不会受到更改的影响,因此应用程序仍然可以运行。
我认为这将是有用的,即使用户通常不会经常更改区域。
我已经使用当前的语言环境设置定义了一个货币格式化程序:
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(标识符:localeIdentifier)
推荐阅读
- android - Android SQLite grop_concat 多列
- asch-development - 如何使用 asch-cli 将一些 XAS 转移到 Dapp
- ruby-on-rails - 如何在 Active Storage 测试中存根文件大小?(测试::单元)
- google-apps-script - 将“行带”主题应用于范围
- mysql - MySql 查询在现场超时但不在本地
- apache-spark - 将数据框保存到本地文件系统会导致空结果
- c# - 在dll中动态调用方法时如何使用依赖注入(统一)?
- excel - Range.Insert 仅在数据已存在时有效
- powershell - 如何从 PowerShell 获取换行符中的字节数?
- regex - 正则表达式匹配过去的标签,包括空字符串