Core Data – NSPnetworkingicate para filtrar el trabajo de cadena vacío incorrecto

He estado usando datos básicos en mi proyecto por un time. Hace unos días, descubrí que algunos de los loggings guardados en la database no aparecen en la interfaz de usuario de la aplicación. Lo he rastreado y he encontrado que no se están buscando en absoluto cuando filter una cadena vacía con NSPnetworkingicate. Y todos ellos comienzan con caracteres no alfabéticos.

Para aclarar el problema, creé un proyecto de ejemplo y agregué algunos datos de muestra a la database. Digamos que son "Muestra", "+ muestra", "Muestra +".

Aquí está el fragment de código que usé para filtrar la cadena vacía. "text" es el nombre de la propiedad string, y moc es la instancia NSManagedObjectContext.

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"BasicEntity"]; NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"text.length > 0"]; [request setPnetworkingicate:pnetworkingicate]; NSArray *samples = [moc executeFetchRequest:request error:&error]; 

La matriz de resultados contiene solo 2 entidades, que son "Muestra" y "Muestra +".

Incluso probé el mismo pnetworkingicado (por supuesto, usando self.length en lugar de text.length) en una matriz simple que contiene cadenas de muestra anteriores, y obtengo las 3 correctamente.

Me pregunto si alguien experimentó el mismo problema. ¿O me estoy perdiendo algo al usar Core Data? Probado en el simulador iOS 7.0.3 y iPad Air 7.0.6.


ACTUALIZACIÓN: Como respondí en otro hilo, solucioné este problema utilizando expresiones regulares.

 NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"text MATCHES %@", @".{1,}"]; 

Sin embargo, creo que el pnetworkingicado original que utilicé es válido. Presentaré un error a Apple para get sus opiniones.

Esto es lo que quieres

 [NSPnetworkingicate pnetworkingicateWithFormat:@"%K != %@", @"text", @""] 

Si también necesita verificar nil / NULL haga esto:

 [NSPnetworkingicate pnetworkingicateWithFormat:@"%K != NULL && %K != %@", @"text", @"text", @""] 

Prueba esto:

 NSPnetworkingicate *pnetworkingicateName = [NSPnetworkingicate pnetworkingicateWithFormat:@"name!=nil AND name!="""];