[Cocoa] Bindings et CoreData

NeoJF

Membre actif
1 Novembre 2000
485
6
40
1 chance sur 10 comme toi !
rch.web.free.fr
Bonjour !

Je suis nouveau au deux et j'essaie de faire quelquechose comme ca : je veux afficher dans une NSTableView une liste d'entités (des entités CoreData, donc gérées par le contexte de mon NSPersistentDocument - configuration Appli Document CoreData) et filtrer cette liste.

Ayant lu ce genre de chose quelque part dans la doc de CoreData, j'ai sous-classé NSArrayController (disons MyArrayController) et surchargé la méthode arrangeObjects afin qu'elle réalise mon filtrage. MyArrayController a également un attribut qui me sert à faire mon filtrage, disons maxValue.

Mon problème est le suivant : j'ai lié (Bindings) un champ de texte à maxValue d'une instance de MyArrayController créée par InterfaceBuilder. Tout se passe bien jusque là, sauf que bien entendu, en l'état actuel des choses, rien n'est filtré. Pour appliquer le filtrage, il faut en effet que MyArrayController réagisse quand son paramètre de filtre change. Pour cela, j'appelle donc rearrangeObjects à la fin de ma méthode setMaxValue. Et c'est là le problème... une fois ce code écrit, lorsque je modifie la valeur du champ maxValue, celui-ci est remis à sa valeur précédente ! :eek: Par exemple, si je tape 2, il met bien 2 dans maxValue, il filtre bien avec 2, mais il affiche 1 si c'est la valeur qu'il y avait avant. Si maintenant je tape 3, il affichera 2...

Voilà mon problème... J'aimerais bien comprendre (je ne vois pas comment trouver les mécanismes précis invoqués dans les Bindings et tout ca) et si possible avoir une solution ! Merci d'avance !