Problème de tri avec les bindings

olofolof Membre
11:58 modifié dans API AppKit #1
'jour !

Soit une entity Core Data qui contient, entre autres, un attribut dateEcheance. Dans une fenêtre, j'ai une table qui m'affiche le contenu de mon entité par les bindings, en utilisant un NSArrayController. Sur ce dernier, je paramètre un sortDescriptor (tacheSort). Dans ma classe "principale", dans la méthode init, je fais :

tacheSort = [[NSMutableArray alloc] initWithObjects:[[NSSortDescriptor alloc] initWithKey:@"dateEcheance" ascending:TRUE], nil];


Et çq fonctionne très bien. Le problème est que j'ai d'abord les lignes avec une date, dans l'ordre croissant et qu'ensuite j'ai les lignes qui n'ont pas de dateEcheance. J'ai donc voulu faire une comparaison "maison". J'ai remplacé la ligne ci-dessus par celle-ci :

tacheSort = [[NSMutableArray alloc] initWithObjects:[[NSSortDescriptor alloc] initWithKey:@"dateEcheance" ascending:TRUE selector:@selector(dateEcheanceCompare:)], nil];


Et, dans ma classe qui représente mon entité (FGEntityTache, qui étend NSManagedObject), j'ai ajouté quelque chose comme ça, juste pour voir si mon code était appelé :

<br />-(NSComparisonResult)dateEcheanceCompare:(NSManagedObject *)aTache {<br />	NSLog(@&quot;Compare...&quot;);<br />	<br />	return [super compare:aTache];<br />}<br />


Quand je lance mon appli, je n'ai rien dans ma fenêtre de log. Je présume donc que je suis légèrement à  côté de la plaque ?


Merci !

Réponses

  • CéroceCéroce Membre, Modérateur
    11:58 modifié #2
    Peut-être une piste: la doc de NSSortDescriptor dit que la fonction de comparaison doit avoir un prototype de la forme:

    - (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString
    


    Ta méthode ne correspond pas au proto, mais j'avoue que j'ignore si le runtime fait cette vérification.
  • olofolof Membre
    11:58 modifié #3
    dans 1220594799:

    Peut-être une piste: la doc de NSSortDescriptor dit que la fonction de comparaison doit avoir un prototype de la forme:

    - (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString
    


    Ta méthode ne correspond pas au proto, mais j'avoue que j'ignore si le runtime fait cette vérification.


    Donc ça signifie que je peux nommer ma fonction comme je veux, mais que je dois lui envoyer que l'attribut à  tester en paramètre et non l'objet entier ? (je ne peux pas tester maintenant, pas de Mac sous la main).
  • olofolof Membre
    11:58 modifié #4
    Changement de programme, je vais plutôt essayer de passer par du drag and drop dans ma tableview et d'avoir un attribut supplémentaire pour gérer l'ordre du tri... Et du coup je vais poster un autre message !!!!
Connectez-vous ou Inscrivez-vous pour répondre.