使用NSFetchedResultsController时如何获得每个部分一条记录

时间:2014-11-13 11:41:37

标签: ios uitableview core-data nsfetchedresultscontroller nsfetchrequest

我使用的是使用Core Data的iOS应用程序,我希望使用UITableView显示实体。

为此,我使用NSFetchedResultsController。 我想要实现的是在其中显示每条记录。基本上我想要每节一行。

我正在努力解决的方法是:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

因为我想在计算numberOfSectionsInTableView时使用这段代码:

{
    id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    return [sectionInfo numberOfObjects];
}

我希望在计算numberOfRowsInSection时有return 1(显然我无法将indexPath.section传递给numberOfSectionsInTableView)。 这个问题/情况的方法是什么?谢谢。

1 个答案:

答案 0 :(得分:1)

阱,

显然,你将拥有与你有对象一样多的部分:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return self.fetchedResultController.fetchedObjects.count;
}

然后,你只有一行/一节,因为这是你想要的

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   return 1;
}

然后在cellForRowAtIndexPath中使用indexPath.section作为rowIndex,使用indexPath.row作为sectionIndex。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSIndexPath * correctedIP = [NSIndexPath indexPathForRow:indexPath.section inSection:0];

    id myItem =  [self.fetchedResultController objectAtIndexPath: correctedIP];
/* ... */

}