Esto me está volviendo loco, literalmente.iOS Core Data cómo comparar correctamente el texto de cadena usando predicados?
Tengo 2 entidades que usan NSStrings como atributo único.
¿Cuál es la forma correcta de crear un predicado que compare NSStrings?
Actualmente tengo: [NSPredicate predicateWithFormat: @ "unique =% @", uniqueValue];
Tengo la sensación de que esto compara las direcciones del puntero, no los valores reales de las cadenas, pero no puedo confirmarlo. Necesito devolver sí para una coincidencia de cadena exacta.
-(BOOL)uniqueEntityExistsWithEnityName:(NSString*)entityName UniqueKey:(NSString*) uniqueKey UniqueValue:(NSString*)uniqueValue SortAttribute:(NSString*)sortDescriptorAttribute ManagedObjectContext:(NSManagedObjectContext*) context;
{
BOOL returnValue = NO;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];
//what is the correct predates to compare the text an string core data property against a passed in string?
request.predicate = [NSPredicate predicateWithFormat:@"unique= %@", uniqueValue];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:sortDescriptorAttribute ascending:YES];
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSError *error = nil;
NSArray *matches = [context executeFetchRequest:request error:&error];
if (!matches)
{
NSLog(@"Error: no object matches");
}
else if([matches count] > 1) {
NSLog(@"Error: More than one object for unique record");
returnValue = YES;
} else if ([matches count] == 0) {
returnValue = NO;
} else {
returnValue = YES;
}
return returnValue;
}
¿Tiene una sensación o un problema real? Tu código se ve bien Sus datos se obtienen de una base de datos sqlite, ¿cómo debe coincidir con las direcciones del puntero? –