archiveRootObject(_to:file:) устарел, не знаете, как реализовать новое кодирование
Я пытаюсь сохранить данные с помощью NSCoding, но мне говорят, что команда, которую я пытаюсь использовать, устарела в iOS 12, и я теряюсь, пытаясь понять, как реализовать кодирование, которое Xcode рекомендует использовать. Я уверен, что вопрос был задан и получен ответ, но я теряюсь, пытаясь найти ответ. Буду признателен за помощь.
кодирование:
func encode(with aCoder: NSCoder) {
aCoder.encode(name, forKey: PropertyKey.characterName)
aCoder.encode(race, forKey: PropertyKey.characterRace)
aCoder.encode(cclass, forKey: PropertyKey.characterClass)
aCoder.encode(background, forKey: PropertyKey.characterBackground)
aCoder.encode(photo, forKey: PropertyKey.characterPhoto)
}
required convenience init?(coder aDecoder: NSCoder) {
guard let name = aDecoder.decodeObject(forKey: PropertyKey.characterName) as? String else {
os_log("Unable to decode the name for a character object.", log: OSLog.default, type: .debug)
return nil
}
let race = aDecoder.decodeObject(forKey: PropertyKey.characterRace) as? String
let cclass = aDecoder.decodeObject(forKey: PropertyKey.characterClass) as? String
let background = aDecoder.decodeObject(forKey: PropertyKey.characterBackground) as? String
let photo = aDecoder.decodeObject(forKey: PropertyKey.characterPhoto) as? UIImage
self.init(name: name, race: race ?? "", cclass: cclass ?? "", background: background ?? "", photo: photo)
}
сохранить кодировку:
private func saveCharacters() {
let isSuccessfulSave = NSKeyedArchiver.archiveRootObject(characterList, toFile: Character.ArchiveURL.path)
if isSuccessfulSave {
os_log("Characters successfully saved", log: OSLog.default, type: .debug)
} else {
os_log("Failed to save Characters", log: OSLog.default, type: .error)
}
}
Xcode предлагает использовать +archivedDataWithRootObject:requiredSecureCoding:error: но я не могу решить, как это реализовать.