这是我的情景: 我有一个“相机”表视图和一个“Rolls”表视图。我想点击相机并加载相应的卷筒。我似乎无法让这个工作。将选定的相机核心数据对象传递到roll表视图NSFetchedResultsController的谓词的正确方法是什么?
相机实体
relationship :roll
目的地:滚动
反向:无反向
滚动实体
关系:相机
目的地:相机
反向:无反向
来自滚动表视图控制器的
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Roll" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"desc" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY camera == %@", self.selectedCamera.objectID];
[fetchRequest setPredicate:predicate];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil
cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}
答案 0 :(得分:0)
你们的关系应该都是反向的(在这种情况下,彼此相反)。这允许Core Data正确管理关系,并允许您在两个方向上导航时方便地设置它。它也恰当地代表了这种关系。
谓词应该是:
NSPredicate *p = [NSPredicate predicateWithFormat:@"camera == %@", self.selectedCamera];
在camera
实体上使用Roll
关系,并检查它是否包含提供的self.selectedCamera
实体实例。