Comment puis-je utiliser le NsfetchedResultSluTroller avec la touche de tri traduite et la sectionCePathePath? P>
Problème: j'ai une pièce d'identité dans la propriété "Type" dans la base de données comme Typea, TypeB, TypeC, ... et non la valeur directement car elle devrait être localisée. En anglais typée = oiseau, typeb = chat, typec = chien en allemand, ce serait Vogel, Katze, Hund. P>
avec une intrigue de NsfetchedResult avec la clé de tri et la sectionNEPATHER sur "Type" Je reçois la commande et les sections - type A - Typeb - typec p>
Suivant I Traduire pour l'affichage et tout va bien en anglais: - Oiseau - Chat - chien p>
maintenant je passe en allemand et recevez un mauvais ordre de tri - Vogel - Katze - HUND P>
Parce qu'il trie toujours par Typea, Typeb, Typec P>
Donc, je cherche un moyen de localiser le tri pour la NsfetchedResultController. P>
J'ai essayé l'approche de la propriété transitoire, mais cela ne fonctionne pas pour la clé de tri, car la clé de tri doit être dans l'entité. P>
Je n'ai aucune autre idée. Mais je ne peux pas croire que ce n'est pas possible d'utiliser NsfetchedResultController sur un attribut dérivé requis pour la localisation? P>
Il y a des discussions connexes telles que Utilisation de sections personnalisées avec NsfetchedResultSlonTroller? mais la différence est la différence que les noms de section personnalisés et la clé de tri ont probablement le même ordre. Pas dans mon cas et c'est la principale différence. p>
à la fin, j'aurais besoin d'une commande de tri pour la NSSorteDescriptor nécessaire sur un attribut dérivé, je suppose. Cet ordre de tri doit également servir pour la sectionNYPATHE. P>
Merci pour tout indice. P>
3 Réponses :
à la fin, j'aurais besoin d'une commande de tri pour le NSSorteDescriptor nécessaire sur un attribut dérivé, je suppose. p>
Pour le tri, une possibilité serait de faire quelque chose comme: p>
xxx pré> où
traduitcompare code> est une méthode de comparaison que vous écrivez (en tant que catégorie sur Nstring) qui localise les valeurs avant de les comparer. p>
Je ne sais pas sur la façon de gérer le sectionNYPATHE. P> blockQuote>
Oui, j'ai essayé cela à un certain point. Mais pour être honnête, je n'ai pas pu convaincre Nstring à l'aide de cette catégorie de comparaison définie ... Je ne m'attendais pas à ce que SectionKeyPath soit un problème car je pourrais utiliser la propriété transitoire ici qui doit correspondre à l'ordre de tri du tri localisé. du descripteur de tri.
Je l'ai donné un autre essai. Veuillez vous reporter à la réponse "J'ai essayé à nouveau avec le comparatif personnalisé ..." (Trop longtemps pour un commentaire).
Je suppose que le problème est causé par le cache.
Vous pouvez définir le cache avec le nom donné lorsque vous créez un objet NsfetchedResultController à l'aide de la méthode suivante. La dernière variable est le nom du cache. P>
- (id)initWithFetchRequest:(NSFetchRequest *)fetchRequest managedObjectContext:(NSManagedObjectContext *)context sectionNameKeyPath:(NSString *)sectionNameKeyPath cacheName:(NSString *)name
Merci pour votre réponse. J'ai essayé cela, mais je n'ai pas vu une différence. Le problème se produit non seulement en passant d'une langue à une autre, il arrive également si je reste dans une langue de langue.
OK, pas une belle solution mais à la fin, cela fonctionne (car j'ai un ensemble limité défini d'enregistrements Ca. 100): P>
sur conditionner l'application: p>
Pour la raison de la perforation, je n'atteignez et trier les enregistrements en fonction d'un NSpredicate. P>
que je peux utiliser tout le code existant à l'aide de la section "Commande par" comme clé de tri et chemin de clés de la section. P>
Je sais que je pourrais utiliser mon tableau commandé en tant que DataSource pour la vue de la table, mais je voulais conserver le code existant et utiliser les méthodes de NsfetchedResultSluStroller. P>
comme une commodité de cela, j'ai un contrôle total sur le tri, qui correspondra à mes besoins à l'avenir, car je prévois de créer un ordre de tri plus complexe (emplacement basé sur une probabilité plus élevée d'utilisation des enregistrements en haut, etc. ) p>
Cependant, ce n'est pas une solution élégante. P>