Как инициализировать CoreDataClass «абстрактного объекта» с помощью SwiftyJSON - PullRequest
0 голосов
/ 27 сентября 2019

В моей базовой модели данных есть абстрактный объект «Пользователь».Я хотел бы инициализировать экземпляр этой сущности, не сохраняя его в базе данных.Поэтому я установил его как абстрактный объект.

Я бы хотел, чтобы этот класс объектов соответствовал 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 для абстрактных сущностей, я могу выяснить, куда я идунеправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...