Core data NSFetchedResultsController,NSPredicate用于检索多对多关系中的子对象

Core data NSFetchedResultsController,NSPredicate用于检索多对多关系中的子对象,core-data,uicollectionview,one-to-many,nspredicate,nsfetchedresultscontroller,Core Data,Uicollectionview,One To Many,Nspredicate,Nsfetchedresultscontroller,我试图弄清楚我是否使用正确的谓词来获取具有以下模型和代码的FRC的给定类别对象的Item对象: 类别>项目 如果类别中没有项目,我将collectionview中的项目数设置为0 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { if ((self.category.items == nil) || [self.category

我试图弄清楚我是否使用正确的谓词来获取具有以下模型和代码的FRC的给定类别对象的Item对象:

类别>项目

如果类别中没有项目,我将collectionview中的项目数设置为0

- (NSInteger)collectionView:(UICollectionView *)collectionView
 numberOfItemsInSection:(NSInteger)section
{
  if ((self.category.items == nil) || [self.category.items count] == 0) {
    return 0;
  }

  id <NSFetchedResultsSectionInfo> sectionInfo =
  [self.fetchedResultsController sections][section];
  return [sectionInfo numberOfObjects];
}
-(NSInteger)collectionView:(UICollectionView*)collectionView
节中的项目编号:(NSInteger)节
{
如果((self.category.items==nil)|[self.category.items count]==0){
返回0;
}
id节信息=
[self.fetchedResultsController节][节];
返回[sectionInfo numberOfObjects];
}
FRC返回对象上下文中的所有项,而不仅仅是指定类别中的项。我试图直接获取Item对象,而不是创建/引用额外的属性。

获取指定类别的所有项的“常用”(且更简单)谓词是

[NSPredicate predicateWithFormat:@"category = %@", self.category]

假设“category”是从“Item”到“category”的逆关系。

谢谢Martin,你的谓词肯定是更好的方法。通过进一步调查,我发现我的问题源于假设FRC是动态变化的。我正在对FRC谓词进行更改,并希望输出能够自行更改。我执行了以下代码来解决这个问题:self.fetchedResultsController=nil;[NSFetchedResultsController deleteCacheWithName:@“主控”];[[self-fetchedResultsController]collectionView]重新加载数据];
[NSPredicate predicateWithFormat:@"category = %@", self.category]