使用父实体的子对象填充tableview

时间:2014-11-02 21:13:42

标签: ios objective-c

我在导航控制器层次结构中有两个tableview控制器。第一个包含父实体,我已经从核心数据实体获取请求成功填充了这些实体。我在父实体中创建了一个与子实体的一对多关系,似乎正在添加子实体。我可以将它与所有父母的所有孩子一起填充,但不能将其限制为当前的父母。我尝试在子tableview控制器获取请求中使用谓词但没有成功。

我是否应该使用includesSubEntities并保留请求中使用的父实体?如果是这样,我会以某种方式使用委托协议吗?

以下代码适用于子tableview。注释掉的位是不同的尝试!

感谢。

- (NSFetchedResultsController *)fetchSerials
{
    if ( !_fetchSerials )
    {
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity =
        [NSEntityDescription entityForName:@"Serial"
                    inManagedObjectContext:AppDelegatePtr.managedObjectContext];
  //      NSPredicate *predicate = [NSPredicate predicateWithFormat:@"inExercise.name = '%@'", [[SMNetworkModel sharedInstance] selectedNarrative]];
    //    [fetchRequest setPredicate:predicate];
    //    [fetchRequest setRelationshipKeyPathsForPrefetching:@[@"inExercise"]];
        [fetchRequest setEntity:entity];
        NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"narrative" ascending:YES];
        [fetchRequest setSortDescriptors:@[sortDescriptor]];
        _fetchSerials = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:AppDelegatePtr.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
        _fetchSerials.delegate = self;
        NSError *error;
        if ( ![_fetchSerials performFetch:&error] )
            NSLog(@"fetch error: %@", error.localizedDescription);
    }
    return _fetchSerials;
}

1 个答案:

答案 0 :(得分:0)

一个愚蠢的错字加上我对我的新朋友Core Data的理解不足,这一切都阻止了Predicates的工作。

我错误地认为你传递了objectIds而不是对象本身。

取消注释涉及谓词的两行,并将selectedNarrative更改为正确的属性,这一切都有效!