2014-05-10 1 views
0

Mon modèle de données est en tant que tel:Comment créer un NSSortDescriptor triant par touches multiples avec un sélecteur

User (Entity) 
- valueOne (NSNumber Attribute) 
- valueTwo (NSNumber Attribute) 

J'utilise un NSFetchedResultsController chercher User entités de base de données à afficher dans mon UITableView. J'ai du mal à trier les résultats de la requête d'extraction. J'ai besoin de trier par valueOne (divided by) valueTwo. J'ai essayé de passer les deux @"self" et nil pour la valeur clé de sortDescriptorWithKey:ascending:selector: pour obtenir l'objet User. Je trierais alors par les valeurs User.valueOne/User.valueTwo dans mon sélecteur personnalisé, mais ni @"self" ou nil semblent fonctionner, car j'obtiens des erreurs pour les deux. La documentation ne semble contenir rien sur la façon de passer l'objet parent pour la clé à trier. Comment puis-je créer un NSSortDescriptor qui trie par valueOne/valueTwo?

Répondre

2

Ce n'est pas possible. Le descripteur de tri d'une requête de récupération de données core peut uniquement trier en fonction des attributs (persistants) des entités. Les attributs transitoires ou les méthodes de comparaison personnalisées (basées sur Objective-C) ne peuvent pas être utilisées.

+0

Je vous remercie d'avoir pris le temps de répondre. Puisque la méthode que je propose n'est pas possible, peut-être pourriez-vous m'indiquer dans quelle direction je pourrais produire cet effet alternativement? –

+0

@AdamK: Pour autant que je sache, la seule solution est de stocker valueOne/valueTwo comme un autre attribut persistant dans l'entité. - Vous pouvez également récupérer tous les objets et les trier en mémoire avec une méthode de tri personnalisée. Mais alors vous perdez tous les avantages d'un contrôleur de résultats récupérés. –

Questions connexes