Я пытаюсь выполнить выборку данных ядра после того, как я вставляю объект, и получаю 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;
}
Пожалуйста, помогите решить проблему. Благодаря
когда я создать предикат в xcdatamodel с: именем == "$ PERSONNAME" его еще доцент работа, я не могу найти способ потерять «вокруг» PERSONNAME –
Теперь я понял, что мне нужно было отредактировать его в «режиме выражения» после того, как я создал предикат. Так что я сделал, это скопировать предикат, а затем снова отредактировать и выбрать выражение из выпадающего списка, а затем вставить и изменить на: имя == $ PERSONNAME Спасибо, Роб. –