微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将语言环境存储到 CoreData Swiftui

如何解决将语言环境存储到 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 的简洁方式,以便在访问特定列表项时可以将其分配回来。

谢谢, 艾蒂安

解决方法

谢谢各位。

解决方法如下:

  1. 我在 Core Data 中针对我用来填充 List 的实体存储了区域设置标识符:

    @State var localeIdentifier = Locale.current.identifier

  2. 当我想格式化货币时,我使用存储的标识符为我的格式化程序启动一个新的语言环境:

    currencyFormatter.locale = Locale.init(identifier: localeIdentifier)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。