0

Так что я потерялся на этом. Я пытаюсь получить объекты, являющиеся дочерними элементами родительского объекта, используя предикат. Если я возьму строку предиката, она вернет все конкретные сообщения. Поэтому я уверен, что это проблема с предикатом. Любая помощь будет принята с благодарностью! Ниже приведена моя настройка.iOS NSPredicate для фильтрации основных данных родительским объектом

AccountTimeLine -> SpecificPosts (один ко многим)

ядро ​​модели данные: enter image description here

enter image description here

извлечённые Результаты Контроллер:

- (void)specificPostFetch 
{ 
    DataAccessLayer *delegate = [[DataAccessLayer alloc]init]; 
    self.managedObjectContext = delegate.managedObjectContext; 
    NSString *entityName = @"SpecificPosts"; 
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName]; 
    request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"createdDateSort" ascending:YES]]; 
    request.predicate = [NSPredicate predicateWithFormat:@"accountTimeLine = %@", self.accountTimeLineObject]; 
    [request setFetchBatchSize:20]; 
    self.specificPostFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil]; 
    self.specificPostFetchedResultsController.delegate = self; 
    [self.specificPostFetchedResultsController performFetch:nil]; 
} 

печать из accountTimeLineObject, который используется для сравнения в предикате

po self.accountTimeLineObject 
<AccountTimeLine: 0x7c087b70> (entity: AccountTimeLine; id: 0x7c086590 <x-coredata://353F201D-E739-4DD0-BEBF-DAD6101CFE51/AccountTimeLine/p72> ; data: { 
    accountType = 0; 
    nextPageUrl = 515986477864337411; 
    sort = 0; 
    specificPosts = "<relationship fault: 0x7c634590 'specificPosts'>"; 
    userAccountId = 582; 
}) 

ответ

0

Попробуйте положить == в вашем предиката, ни один =:

request.predicate = [NSPredicate predicateWithFormat:@"accountTimeLine == %@", self.accountTimeLineObject]; 
+0

Да я попробовал это раньше. Ничего не меняет. Не уверен, существует ли разница между == и = внутри этих предикатов? Я также попытался добавить ObjectId, как этот «request.predicate = [NSPredicate predicateWithFormat: @» accountTimeLine ==% @ », [self.accountTimeLineObject objectID]]; и это тоже не сработало. Любые другие идеи? – mikemike396

+0

Вы получаете ошибку или просто пустой массив? – pbasdf

+0

Пустой выбранный контроллер результатов, когда я поставил точку останова на cellForRow. Где, когда я комментирую строку предиката, я возвращаю 40 объектов. (lldb) po [self.specificPostFetchedResultsController.fetchedObjects count]; mikemike396

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