Tengo un searchDisplayController
que funciona a la perfección en la búsqueda de palabras árabes Inglés y el uso de un método de la siguiente manera:searchDisplayController no mostrar los resultados si el idioma iphone no es Inglés
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSInteger)scope
{
NSString *query = self.searchDisplayController.searchBar.text;
if (query && query.length) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ClientName contains[cd] %@", query];
[searchResultController_.fetchRequest setPredicate:predicate];
}
NSError *error = nil;
if (![[self searchResultController] performFetch:&error]) {
// Handle error
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
}
Sin embargo, esto funciona bien si el iPhone el idioma es inglés, pero si cambio el idioma del iPhone a árabe (configuración global) y trato de buscar en palabras en árabe o en inglés, el searchResultsController
no mostrará los resultados, ¿por qué?
p.s. cuando pongo una palabra árabe estática en consulta como esta: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ClientName contains[cd] %@", @"تجريب"];
la searchDisplayController
mostrará el resultado correcto de la palabra árabe تجريب
EDIT: He intentado construir el predicado en el código como el siguiente:
NSExpression *clientNameEx=[NSExpression expressionForKeyPath:@"ClientName"];
NSExpression *aClientEx=[NSExpression expressionForConstantValue:query];
NSPredicate *predicate=[NSComparisonPredicate predicateWithLeftExpression:clientNameEx
rightExpression:aClientEx
modifier:NSDirectPredicateModifier
type:NSContainsPredicateOperatorType
options:0];
pero fue en vano ...
Use searchText en lugar del texto en searchBar. Y por favor, NSLog() la cadena recibida en searchText y compárela con la cadena literal que funciona bien como dices en tus p.s. Entonces sabremos si el problema es con esa cadena. – Gabriel
He hecho esto, NSLog muestra la misma cadena árabe literal en p.s. sección de mi pregunta, PERO lo que me vuelve loco es que el resultado está vacío !! – JAHelia
¿Y si comparas ambas cadenas con '[@ "تجريب" comparar: searchText]'? ¿Qué devuelve? NSOrderSame? – Gabriel