Вот полный класс, который я сохраняю в данных ядра в качестве преобразуемого.
public class Item: NSObject, NSCoding {
public var imageData: Data
public var title: String
public var keywords: [String]
public var date: Date
public init(imageData: Data, title: String, date: Date, keywords: [String]) {
self.imageData = imageData
self.title = title
self.date = date
self.keywords = keywords
super.init()
}
public func encode(with coder: NSCoder) {
coder.encode(imageData, forKey: "imageData")
coder.encode(title, forKey: "title")
coder.encode(keywords, forKey: "keywords")
coder.encode(date.timeIntervalSince1970, forKey: "date")
}
public required convenience init?(coder: NSCoder) {
self.init(
imageData: (coder.value(forKey: "imageData") as? Data) ?? Data(),
title: (coder.value(forKey: "title") as? String) ?? "",
date: Date(timeIntervalSince1970: (coder.value(forKey: "date") as? TimeInterval) ?? Date().timeIntervalSince1970),
keywords: coder.value(forKey: "keywords") as? [String] ?? [])
}
}
Я могу успешно сохранить эти объекты в данных ядра, но когда я получаю эти объекты, происходит сбой в method -> publi c требуется удобство init? (кодер: NSCoder)
Поскольку кодировщик не может найти значение для ключа.
Вот ошибка Я получаю,
Завершение приложения из-за необработанного исключения 'NSUnknownKeyException', причина: '[valueForUndefinedKey:]: этот класс не совместим с кодировкой значения ключа для ключа imageData.
Я пробовал использовать другой преобразователь, я пытался создать свой собственный.
Я пытался сохранить его как двоичные данные, и я также попытался создать реляционную базу данных, но, похоже, ничего не работает.
Что-то я здесь не так делаю?
Спасибо!