J'ai des problèmes avec un projet de données de base. J'ai un NSArrayController avec NSManagedObjects et des boutons +/-. Si je supprime un objet dans la ligne après que le fichier a été sauvegardé, il fonctionne parfaitement, mais si j'ajoute un nouvel objet et le supprime immédiatement (sans changer les valeurs par défaut), j'obtiens une erreur:Données de base: Erreur lors de la suppression d'un objet non enregistré
Serious application error. Exception was caught during Core Data change processing: Unknown number type or nil passed to arithmetic function expression. with userInfo (null)
Unknown number type or nil passed to arithmetic function expression.
C'est le même cas si j'annule l'ajout du nouvel objet.
Quelqu'un peut-il me donner un pointeur? Je suppose que cela a quelque chose à voir avec le fait qu'il a seulement une identification temporaire, mais comment le résoudre je ne sais pas.
Vous ne devez pas ** ignorer ** la méthode '-init ...' d'un objet 'NSManagedObject' ni sa méthode '-dealloc' pour cela. Si vous avez besoin d'ajouter un observateur, vous devez le faire dans '-awakeFromInsert' et' -awakeFromFetch'. –
Selon la documentation "Méthodes pour contourner les considérations" les deux initWithEntity: insertIntoManagedObjectContext: amd dealloc sont autorisés à être remplacés? La raison pour laquelle j'utilise init au lieu de awake, c'est parce que je trouve que awake n'est pas toujours callen (si un utilisateur annule ou quelque chose). Mais j'ai peut-être tort. –
vous avez raison sur annuler et refaire, dans 10.6+ il y a la méthode supplémentaire awakeFromSnapshotEvent qui est également appelée dans undo/redo. Comme une solution de contournement pour 10.5 j'ai changé ManagedObjectContext pour permettre d'annuler et de refaire avec des observations de travail http://github.com/mbrugger/CoreDataDependentProperties/blob/master/LPAutomatedObserving/Classes/LPManagedObjectContext.m –