NSPnetworkingicate contiene cadena en minúscula

Estoy desarrollando una aplicación para iOS con iOS SDK 6.0 y XCode 4.5.2. Mi desarrollo objective es 4.3.

Estoy usando Core Data para administrar mis datos. Ahora tengo este NSPnetworkingicate para search tiendas:

 if ((shopSearchBar.text != nil) && ([shopSearchBar.text length] > 0)) { NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"name = %@",shopSearchBar.text]; [fetchRequest setPnetworkingicate:pnetworkingicate]; } 

Esta es la entidad Shop:

introduzca la descripción de la imagen aquí

Tengo que convertir el nombre en minúsculas y ver si contiene shopSearchBar.text en formatting minúscula.

Ejemplo:

Tengo estas cuatro tiendas:

  • Shop1
  • tienda 1
  • mi tienda
  • tienda

Si el text de búsqueda del usuario es 'shop', debe devolverlos todos.

¿Sabes como hacer esto?

Así es como he resuelto mi problema:

 if ((shopSearchBar.text != nil) && ([shopSearchBar.text length] > 0)) { NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"name CONTAINS[cd] %@", shopSearchBar.text]; [fetchRequest setPnetworkingicate:pnetworkingicate]; } 

(a) Puede agregar una columna a su repository – nombre en minúscula – y cada vez que guarda una tienda, guarde una versión en minúscula de su nombre. Entonces su pnetworkingicado es simplemente comparar 🙂

(b) Sin embargo, si lo único que quiere es hacer una comparación sin distinción de caso, intente esto:

 if ((shopSearchBar.text != nil) && ([shopSearchBar.text length] > 0)) { NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"name LIKE[cd] %@",shopSearchBar.text]; [fetchRequest setPnetworkingicate:pnetworkingicate]; } 

Esta es también una comparación insensible diacrítica. Mire la sección Comparación de cadenas de esta página de documentos para get más opciones.

(a) le brinda consultas más rápidas pero un código más complicado. (b) le da methods de save muy simples pero consultas (un poco) más lentas

Debería poder utilizar el método pnetworkingicateWithBlock: NSPnetworkingicat:

 NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithBlock:^BOOL(id obj, NSDictionary *bind) { return [self.name compare:shopSearchBar.text options:NSCaseInsensitiveSearch] == NSOrdenetworkingSame; }];