2010-02-16 2 views
0

Я пытаюсь выполнить выборку данных ядра после того, как я вставляю объект, и получаю 0 результатов. У меня есть Person Entity.And я построил выборки запрос в DataModule GUI с предикатом:NSFetchRequests возвращает 0 результатов, когда он должен возвращаться 1

имя == «PERSONNAME»

Просто перед поиском имени я вставить и сохранить его первый. и я знаю, что это работает, потому что я отображаю имена в таблице, а coredata сохраняется после закрытия и снова открывает приложение.

Вот код, который я закодировал для извлечения. Пожалуйста, помогите мне понять, почему я получаю 0 результатов

-(Person *)findPersonByName:(NSString *)name{ 
    NSLog(@"looking for person with name: %@",name); 
    NSDictionary *subs = [NSDictionary dictionaryWithObject:name forKey:@"PERSONNAME"]; 
    NSAssert(self.managedObjectModel, @"anything wrong with managedObjectModel");//no 
    NSFetchRequest *fetch = [self.managedObjectModel fetchRequestFromTemplateWithName:@"getPersonByName" substitutionVariables:subs]; 
    NSAssert(fetch, @"anything wrong with fetch?");//no 
    NSLog(@"fetch: %@",fetch); 
    NSError *error; 
    NSArray *result = [self.managedObjectContext executeFetchRequest:fetch error:&error]; 
    NSLog(@"fetch request getQuestionsByParent: %u found (sub variables:%@, results:%@)", [result count], subs, result); 
    if (result == nil){ 
     // Deal with error... 
    } 
    else if([result count]>0){ 
     for (Person *person in result) { 
      NSLog(@"search result: %@",person.name); 
     } 
    } 
    return nil; 
} 

Пожалуйста, помогите решить проблему. Благодаря

ответ

2

В шаблоне предиката:

name == "PERSONNAME" 

должно быть:

name == $PERSONNAME 
+0

когда я создать предикат в xcdatamodel с: именем == "$ PERSONNAME" его еще доцент работа, я не могу найти способ потерять «вокруг» PERSONNAME –

+0

Теперь я понял, что мне нужно было отредактировать его в «режиме выражения» после того, как я создал предикат. Так что я сделал, это скопировать предикат, а затем снова отредактировать и выбрать выражение из выпадающего списка, а затем вставить и изменить на: имя == $ PERSONNAME Спасибо, Роб. –

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