J'ai une sous-classe NSManagedObject, qui doit être remplie avant de retourner correctement (elle a tous ses champs comme non-optionnels), donc quand je fais l'init, tout d'abord j'utilise un garde pour être sûr des données (de JSON) est correct comme suit:Sous-classe NSManagedObject avec init de fift dans 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
}
...
...
Le problème est que le compilateur me renvoie une erreur Super.init isn't called before returning from initializer
car il est possible que cette méthode init lance une exception sans appeler super.init
avant.
Mon mec est sur la façon de procéder: 1. Devrais-je appeler super.init avant et créer un "objet fictif" avant que garde? Dans ce cas, je devrais enlever cet objet du contexte avant de jeter l'exception? 2. Un autre test que je pouvais faire avant de cette garde est d'être sûr que entityName est correct comme suit:
guard let entity = NSEntityDescription.entityForName(Ticket.entityName, inManagedObjectContext: context) else {
return
}
Dans ce cas, je ne peux pas créer l'objet dans le contexte parce que je n » J'ai une entité, donc il est impossible (je pense) de créer un objet à entité nulle dans un contexte.
Une suggestion sur comment procéder?
Merci!
Merci R @ Martin, qui fait sens! :) –
@JorgeMaroto: Vous êtes les bienvenus! –