Question

Je suis en train d'obtenir des données localisées triées d'un modèle de données de base. Mon code:

NSEntityDescription *entityDescription = [NSEntityDescription entityForName: entityDescriptionValue
                                                     inManagedObjectContext: context];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity: entityDescription];

[fetchRequest setPredicate: predicate];

NSSortDescriptor *sortBy = [[NSSortDescriptor alloc] initWithKey: @"name" ascending: YES selector: @selector(localizedCompare:)];
[fetchRequest setSortDescriptors: [NSArray arrayWithObject: sortBy]];
[sortBy release];

Mais, quand je reçois les objets, ils viennent toujours avec les valeurs triées originales (données non localisées).

Qu'est-ce que je fais pas?

Était-ce utile?

La solution

Comment obtenez-vous la names localisée de l'entité CoreData? Ce n'est pas localizedCompare: récupère par magie la version localisée de chaînes et de les comparer. Il utilise plutôt les ordres de tri localisés aux mêmes chaînes. La version d'un tableau triée contenant @"England", @"France", @"Germany" serait le même dans tous les pays ... ils ne contiennent pas de caractères accentués ou peu importe. Le résultat de localizedCompare: ne peut changer lorsque deux langues utilisent différents ordres de tri entre les lettres.

Si vous voulez récupérer quelque chose de Localizable.strings basée sur la propriété des entités CoreData, vous devez le faire manuellement. backend sqlite de CoreData ne traitera pas qu'au niveau des demandes de récupération. Donc, vous devez d'abord chercher les entrées dans un NSArray, et doit ensuite les trier en utilisant sortedArrayUsing...: en adoptant une méthode qui permet de retrouver les noms localisés par NSLocalizedString et les compare.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top