iOS (Swift): основные преобразуемые атрибуты данных
У меня простой Time
класс, который принимает NSCoding
протокол:
class Time: NSObject, NSCoding {
var hours: Int
func encode(with aCoder: NSCoder) {
aCoder.encode(self.hours, forKey: "hours")
}
public required init?(coder aDecoder: NSCoder) {
guard let hours = aDecoder.decodeObject(forKey: "hours") as? Int
else { return nil }
self.hours = hours
}
init(hours: Int) {
self.hours = hours
}
}
который я хочу быть Transformable
приписать мой Watch
юридическое лицо:
final class Watch: NSManagedObject {
@NSManaged public fileprivate(set) var time: Time
}
как показано здесь:
Я успешно сохранил это в контексте управляемого объекта, но когда я перезагружаю приложение, time
атрибут nil
,
Я что-то здесь упускаю? Почему это свойство не может быть успешно сохранено? Кажется, это все, что требуется в других постах.
Большое спасибо за любую помощь!
1 ответ
Решение
Предложение в комментариях к вопросу @IraniyaNaynesh - красная сельдь.
Ответ оказывается довольно простым. + Изменить decodeObject
в decodeInteger
в init?(coder aDecoder: NSCoder)
метод и данные восстанавливают BLOBS
которые не являютсяnil
и были успешно сохранены из базы данных SQLite.