В моей базовой модели данных есть абстрактный объект «Пользователь».Я хотел бы инициализировать экземпляр этой сущности, не сохраняя его в базе данных.Поэтому я установил его как абстрактный объект.
Я бы хотел, чтобы этот класс объектов соответствовал JSONAble, поскольку я использую SwiftyJSON для упрощения.
Чтобы он соответствовал, я должен реализовать метод initrequired convenience init?(dict: [String : Any])
.
Вот как выглядит этот метод:
required convenience public init?(dict: [String : Any]) {
let decoder = JSONDecoder()
guard let codingUserInfoKeyManagedObjectContext = CodingUserInfoKey.managedObjectContext,
let managedObjectContext = decoder.userInfo[codingUserInfoKeyManagedObjectContext] as? NSManagedObjectContext,
let entity = NSEntityDescription.entity(forEntityName: "User", in: managedObjectContext) else {
fatalError("Failed to decode User")
}
self.init(entity: entity, insertInto: nil)
let json = JSON(dict)
let userDictionary = json["user"]
id = userDictionary["id"].int32Value
phoneCode = userDictionary["countryCode"].stringValue
mobileNumber = userDictionary["mobileNumber"].stringValue
firstName = userDictionary["firstName"].stringValue
lastName = userDictionary["lastName"].stringValue
avatar = userDictionary["avatar"].stringValue
userRole = userDictionary["userRole"].int32Value
let dateString = userDictionary["dateAdded"].stringValue
if let date = dateString.asDate() {
dateCreated = date
}
}
При запуске этого процесса он не может декодировать пользователя и удаляет fatalCrash, который у меня есть.
Я все еще немного не уверен в том, как абстрактные сущности должны быть инициализированы без сохранения в базе данных, возможно, если я смогу найти правильный способ настройки CoreDataClass для абстрактных сущностей, я могу выяснить, куда я идунеправильно.