У меня есть подкласс NSManagedObject, который необходимо выполнить перед тем, как правильно возвращаться (он имеет все свои поля как необязательные), поэтому, когда я выполняю init, в первую очередь использую охранником, чтобы быть уверенным в данных (от JSON) правильно следующим образом:Подкласс подкатегория NSManagedObject с отказоустойчивым инициализацией в swift
public init(context: NSManagedObjectContext, dictionary: [String: AnyObject]) throws {
guard
let modified_on = date(dictionary["modified_on"] as? String),
let start_on = date(dictionary["start_on"] as? String),
let end_on = date(dictionary["end_on"] as? String),
let ticket_name = dictionary["ticket_name"] as? String
else {
throw ErrorParseModel.ErrorParsing
}
...
...
проблема заключается в том, что компилятор возвращает мне ошибку Super.init isn't called before returning from initializer
, потому что это возможно, что этот метод инициализации выдает исключение без раньше позвонить super.init
.
Мой чувак о том, как действовать: 1. Должен ли я вызвать super.init раньше и создать «фиктивный объект» раньше, чем охранник? В этом случае я должен удалить этот объект из контекста, прежде чем выбрасывать исключение? 2. Еще один тест, который я мог бы сделать, прежде чем этот охранник должен быть уверен, что EntityName правильно следующим образом:
guard let entity = NSEntityDescription.entityForName(Ticket.entityName, inManagedObjectContext: context) else {
return
}
В этом случае я не могу создать объект в контексте, потому что я не» t есть сущность, поэтому невозможно (я думаю) создать объект nil-entity в одном контексте.
Любое предложение о том, как я могу продолжить?
Спасибо!
Спасибо @Martin R, который имеет смысл! :) –
@JorgeMaroto: Добро пожаловать! –