2012-07-03 4 views
8

У меня есть образец программы, которая использует Core Data и загружает в нее базу данных sqlite. И я отображая все значения, используя этот кодКак выбрать конкретные данные в 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); 
} 

Этого код работает отлично, моя проблема в том, что я не могу выбрать конкретные данные/запись. Пример. Я хочу выбрать запись с ID = 1.

Спасибо!

+0

Пожалуйста, проверьте вниз правильный ответ;) – Pierre

ответ

16

Перед выполнением запроса вы должны использовать предикаты (с NSPredicate).

Нечто подобное:

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

Спасибо! Это работает для меня :) – 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

Спасибо! :) – kimbebot

+0

Добро пожаловать. Если это поможет, вы можете повысить: D –

Смежные вопросы