使用父实体的子对象填充tableview
问题描述:
我在导航控制器层次结构中有两个tableviewcontrollers。第一个包含我从核心数据实体获取请求成功填充的父实体。我在父实体中为子实体创建了一对多的关系,并且好像添加了子实体。我可以将其与所有父母的所有孩子一起填充,但不能将其限制为当前的父母。我曾尝试在子表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;
}
答
愚蠢的拼写错误,在我的我的新朋友核心数据的理解不足相结合是所有从工作停止谓词。
我错误地认为你传递了objectIds而不是对象本身。
取消注释涉及谓词的两条线,并将selectedNarrative更改为正确的属性,它一切正常!