试图将语言环境保存到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);
}
}
我要保存的每个语言环境: 货币代码-字符串 标识符-字符串 货币名称-字符串 货币符号-字符串
我应该单独保存每个属性,还是可以保存整个语言环境?
答案 0 :(得分:0)
您可以将NSLocale另存为Transformable属性。
NSKeyedUnarchiveFromDataTransformerName默认情况下用于将普通对象转换为Core Data存储表示形式。但是在这种情况下,您的普通对象应符合NSCoding或NSSecureCoding协议。
如果要转换更复杂的对象,则必须将NSValueTransformer子类化。
但是NSLocale符合NSSecureCoding,因此您可以通过将Entity的此属性的类型设置为Transformable直接保存它。
请参阅Apple的sample。