0

我有一个 NSFetchResultsController,它返回按部分排列的 ManagedObjects。这些部分是我的对象共有name的对象的 NSString:CategoryFeed

现在,在某些情况下,我想Category从该部分获取自身:

  NSString *sortKey = @"category.name";
  NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Feed"];
  NSSortDescriptor *sortDescriptorCategory = [NSSortDescriptor sortDescriptorWithKey:sortKey ascending:asc];

此刻,我这样做:

    Category *cat = ((Feed *)[[[self.fetchedResultsController sections][section] objects] objectAtIndex:0]).category;

恕我直言,这很丑陋。特别是因为它禁止我有空的部分,但是如果我创建要将现有Feeds 移动到的新部分,则可能会发生这种情况。

所以我的问题是:如何访问Category定义Feed列表中部分的对象?

另外,我怎样才能有效地收集 NSSet 中所有部分的列表?

在此先感谢您的帮助。

4

1 回答 1

1

您检索部分对象的方法是可以的,您应该只包括完整性检查。

NSArray *feeds = [self.fetchedResultsController.sections[section] objects];
Feed *aFeed = [feeds anyObject];
return aFeed ? aFeed.category : nil;

所有部分的列表为NSSet

[NSSet setWithArray:self.fetchedResultsController.sections];

如果您想在节标题中广泛使用类别实体,也许最好更改您的设置:获取类别而不是提要,并更改表视图数据源方法以反映此设置,例如

// number of rows for section
Category *category = self.fetchedResultsController.fetchedObjects[section];
return category.feeds.count;

您将需要引入一个排序标准来将feeds集合更改为一个节的行的数组。

于 2013-09-06T07:52:55.943 回答