Pregunta

Estoy tratando de obtener datos localizadas ordenadas de un modelo de datos central. Mi código:

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];

Sin embargo, cuando llegue a los objetos, que todavía vienen ordenada con los valores originales (datos no localizado).

Lo que no soy yo que hace la derecha?

¿Fue útil?

Solución

¿Cómo se obtiene la names localizada de la entidad CoreData? No es que localizedCompare: recupera mágicamente la versión localizada de cuerdas y compararlos. En su lugar, utiliza los criterios de ordenación localizadas a las mismas cadenas. La versión ordenada de una matriz que contiene @"England", @"France", @"Germany" sería el mismo en cualquier país ... que no contienen caracteres acentuados o lo que sea. El resultado de localizedCompare: sólo puede cambiar cuando se utilizan dos lenguas orden de publicación diferente entre las letras.

Si desea recuperar algo de Localizable.strings basado en la propiedad de las entidades CoreData, es necesario hacerlo manualmente. backend SQLite de CoreData no manejará que al ir a buscar el nivel de solicitudes. Así que hay que ir a buscar primero las entradas en un NSArray, y luego tenga que ordenarlos usando sortedArrayUsing...: pasando un método que recupera los nombres localizados por NSLocalizedString y los compara.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top