Hi everyone !
I'm trying to save a custom object into the UserDefaults but it sounds like the JSONEncoder don't encode correctly my object.
Take a look at my object structure:
struct Language: Identifiable, Codable {
@DocumentID var id: String?
var code: String
var localizedName: String? {
return localizedStringFromCode()
}
init?(id: String?, code: String?) {
guard let code = code else { return nil }
self.id = id
self.code = code
}
private func localizedStringFromCode() -> String? {
return Locale.current.localizedString(forLanguageCode: self.code)
}
}
To encode this object, I just followed the example here
Here is how I try to encode my custom object:
var sourceLanguage: Language? {
set {
if let value = newValue {
// The if let below fails due to encode failure
if let encodedLanguage = try? encoder.encode(value) {
UserDefaults.standard.set(encodedLanguage, forKey: "SourceLanguage")
}
}
}
get {
if let savedLanguage = UserDefaults.standard.object(forKey: "SourceLanguage") as? Data,
let loadedLanguage = try? decoder.decode(Language.self, from: savedLanguage) {
return loadedLanguage
} else {
return nil
}
}
}
I thanks you a lot in advance and I hope you'll help me solve my problem. Have a nice day !