2012-07-03 13 views
8

Tengo un programa de ejemplo que usa datos principales y carga una base de datos sqlite en él. Y estoy mostrando todos los valores utilizando el código¿Cómo seleccionar datos específicos en Core Data?

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Name" 
              inManagedObjectContext:context]; 
[fetchRequest setEntity:entity]; 
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error]; 

for (Name *name in fetchedObjects) { 
    NSLog(@"ID: %@", name.nameId); 
    NSLog(@"First Name: %@", name.first); 
    NSLog(@"Middle Name: %@", name.middle); 
    NSLog(@"Last Name: %@", name.last); 
} 

Este código funciona bien, mi problema aquí es que no puedo seleccionar un conjunto de datos/registro específico. Ejemplo Quiero seleccionar el registro con la ID = 1.

¡Gracias!

+0

Por favor marque abajo la respuesta correcta;) – Pierre

Respuesta

16

Debe usar predicados (con NSPredicate) antes de la ejecución de su solicitud.

Algo así:

NSPredicate *predicateID = [NSPredicate predicateWithFormat:@"nameID == %d",-1]; 
[fetchRequest setPredicate:predicateID]; 
+0

Gracias! Funciona para mí :) – kimbebot

10
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Name" 
              inManagedObjectContext:context]; 
[fetchRequest setEntity:entity]; 

//Add following method to your code. this will help you to get desired result. 
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"yourColumnID == %@", yourID]]; 

NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error]; 

for (Name *name in fetchedObjects) { 
    NSLog(@"ID: %@", name.nameId); 
    NSLog(@"First Name: %@", name.first); 
    NSLog(@"Middle Name: %@", name.middle); 
    NSLog(@"Last Name: %@", name.last); 
} 
+0

¡Gracias por esto! :) – kimbebot

+0

Bienvenido. Si te ayudó, puedes votar: D –