Ошибка coredata - supportsSecureCoding

swift
coredata

#1

Здравствуйте, подскажите пожалуйста, в чем я не прав?

Failure to save context: Error Domain=NSCocoaErrorDomain Code=134060 "A Core Data error occurred." UserInfo={NSUnderlyingError=0x600003555dd0 {Error Domain=NSCocoaErrorDomain Code=4866 "Данные не удалось записать, так как они имеют неверный формат." UserInfo={NSUnderlyingError=0x600003557090 {Error Domain=NSCocoaErrorDomain Code=4864 "Class 'InStat.Preferences' disallows secure coding. It must return YES from supportsSecureCoding." UserInfo={NSDebugDescription=Class 'InStat.Preferences' disallows secure coding. It must return YES from supportsSecureCoding.}}}}}

я пробовал в класс добавлять public static var supportsSecureCoding = true
Использовал как NSSecureUnarchiveFromDataTransformer так и NSSecureUnarchiveFromData

public class Preferences: NSObject, NSCoding {
    var id = 0
    var name = LanguageItem<String>(values: [:], defaultLanguage: "")
    var subName = LanguageItem<String>(values: [:], defaultLanguage: "")
    var flag = URL(string: "")
    var iconSport = ""
    var kindOfSport = 0
    var isSelected = false


init(id: Int, name: LanguageItem<String>, subName: LanguageItem<String>, flag: URL, iconSport: String, kindOfSport: Int, isSelected: Bool) {
    self.id = id
    self.name = name
    self.subName = subName
    self.iconSport = iconSport
    self.flag = flag
    self.kindOfSport = kindOfSport
    self.isSelected = isSelected
}

enum CodingKeys: String, CodingKey {
    case id, name, subName, iconSport, flag, kindOfSport, isSelected
}

public override init() {
    super.init()
}
public func encode(with aCoder: NSCoder) {
    aCoder.encode(id, forKey: CodingKeys.id.rawValue)
    aCoder.encode(name, forKey: CodingKeys.name.rawValue)
    aCoder.encode(subName, forKey: CodingKeys.subName.rawValue)
    aCoder.encode(iconSport, forKey: CodingKeys.iconSport.rawValue)
    aCoder.encode(flag, forKey: CodingKeys.flag.rawValue)
    aCoder.encode(kindOfSport, forKey: CodingKeys.kindOfSport.rawValue)
    aCoder.encode(isSelected, forKey: CodingKeys.isSelected.rawValue)
}


public required convenience init?(coder aDecoder: NSCoder) {
    let id = aDecoder.decodeObject(forKey: CodingKeys.id.rawValue) as? Int ?? 0
    let name = aDecoder.decodeObject(forKey: CodingKeys.name.rawValue) as? LanguageItem<String> ?? LanguageItem<String>(values: [:], defaultLanguage: "")
    let subName = aDecoder.decodeObject(forKey: CodingKeys.subName.rawValue) as? LanguageItem<String> ?? LanguageItem<String>(values: [:], defaultLanguage: "")
    let iconSport = aDecoder.decodeObject(forKey: CodingKeys.iconSport.rawValue)  as? String ?? ""
    let flag = aDecoder.decodeObject(forKey: CodingKeys.flag.rawValue) as? URL ?? URL(string: "")
    let kindOfSport = aDecoder.decodeObject(forKey: CodingKeys.kindOfSport.rawValue) as? Int ?? 0
    let isSelected = aDecoder.decodeObject(forKey: CodingKeys.isSelected.rawValue) as? Bool ?? false
    self.init(id: id, name: name, subName: subName, flag: (flag ?? URL(string: ""))!, iconSport: iconSport, kindOfSport: kindOfSport, isSelected: isSelected)
}

}