CoreData + NSArrayController + NSTableView = Problème de faux doublon

yoannyoann Membre
juillet 2009 modifié dans API AppKit #1
Salut tout le monde,

J'ai un petit problème à  deux franc avec une appli en cours. J'utilise CoreData en base de donnée avec un NSArrayController et des bindings vers ma NSTableView pour l'affichage.

Je ne sais pas pourquoi lorsque je fait un add: et que mon NSArrayController à  l'option Prepare content de coché, la nouvelle ligne apparait deux fois, alors que dans la base elle n'y est sauvegardé qu'une fois, et si je relance mon appli, elle n'apparaà®t qu'une fois. Lorsque j'ai le doublon si je modifie un coté ça s'affiche de l'autre, c'est donc bien le même objet.

Cependant si l'option prepare content n'est pas coché l'ajout se passe comme il faut mais par contre au relancement de l'application le NSArrayController ne voit pas les anciennes donnée (normal).

ça fait un moment que j'ai pas touché cette techno donc j'ai du oublier un truc bidon, quelqu'un à  une idée ?

Réponses

  • laudemalaudema Membre
    23:43 modifié #2
    Bonjour Yohan,

    Je ne sais pas si ma réponse va t'aider mais je viens d'avoir ce souci en utilisant setValue: plutôt que setPrimitiveValue: dans awakeFromInsert de l'objet dédoublé. Mea semper culpa  :(




  • laudemalaudema Membre
    23:43 modifié #3

    Doublon là  aussi ?
    J'ai viré le code que j'avais dans awakeFromInsert ne laissant qu'un NSLog(@awakeFromInsert done), créant mon objet via insertNewObjectForEntityForName appelé d'un autre bouton que le Add relié au arrayController.
    Et je vois le message s'afficher deux fois dans la console. ? ?
    Je n'ai bien qu'un seul objet créé et affiché et il a eu droit à  deux awakeFromInsert dans sa vie d'objet..
  • yoannyoann Membre
    23:43 modifié #4
    Désolé j'ai pas eu le temps de repasser par ici.

    Pour ma part j'ai réglé le problème qui viens du add: du NSArrayController qui fait un peut n'importe quoi (ou que je n'utilise pas comme il faut)

    Pour ma part j'ai remplacé le add: par une méthode perso qui ne fait que créer un nouvel objet dans la base CoreData et le KVO de NSArrayController fait le reste.
Connectez-vous ou Inscrivez-vous pour répondre.