如何在CoreData中保存特定的NSLocale

时间:2018-09-12 03:27:28

标签: swift core-data nslocale

试图将语言环境保存到CoreData中,只是不确定我应该以哪种格式保存数据。

let locale = Locale.current
let currencyCodesArray = Locale.commonISOCurrencyCodes

for currencyCode in currencyCodesArray {

        // let currencyName = locale.displayName(forKey:NSLocale.Key.currencyCode, value : currencyCode)
        let currencyName = locale.localizedString(forCurrencyCode: currencyCode)

        //let currencySymbol = locale.displayName(forKey:NSLocale.Key.currencySymbol, value : currencyCode)
        let currencySymbol = locale.currencySymbol

        let identifier = locale.localizedString(forIdentifier: currencyCode)

         print(identifier);

        if let _ = currencySymbol, let currencyName = currencyName{

            let currencyModel = CurrencyModel()
            currencyModel.currencyName = currencyName
            currencyModel.currencyCode = currencyCode
            currencyModel.currencySymbol = currencySymbol!

            //currencyModel.identifier = identifier

            currencies.append(currencyModel)

            //print(identifier);
        }
    }

我要保存的每个语言环境: 货币代码-字符串 标识符-字符串 货币名称-字符串 货币符号-字符串

我应该单独保存每个属性,还是可以保存整个语言环境?

1 个答案:

答案 0 :(得分:0)

您可以将NSLocale另存为Transformable属性。

NSKeyedUnarchiveFromDataTransformerName默认情况下用于将普通对象转换为Core Data存储表示形式。但是在这种情况下,您的普通对象应符合NSCodingNSSecureCoding协议。

如果要转换更复杂的对象,则必须将NSValueTransformer子类化。

但是NSLocale符合NSSecureCoding,因此您可以通过将Entity的此属性的类型设置为Transformable直接保存它。

请参阅Apple的sample