NSFetchedResultsController仅获取前10个项目

时间:2013-11-28 15:45:14

标签: ios objective-c uitableview core-data nsfetchedresultscontroller

我正在使用NSFetchedResultsController(以及委托方法)将CoreData中的项目显示为UITableView

但是,我只希望表格显示前几个项目(比如10)。

为此我做了这个......

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return MIN([[self.fetchedResultsController fetchedObjects] count], 10);
}

如果超过10个项目,则返回10。或者,如果项目数小于10,它将返回项目数。

适用于下载的前10个项目。但是,我接着刷新了下载的数据。

这为CoreData添加了另外10个项目,然后触发了FRC委托方法。

这导致错误说...

There were 10 items before the update. You added 10 items. Now there are still 10 items but there should be 20.

这来自UITableView beginUpdatesendUpdates方法。

我知道这是正确的,因为我正在向CoreData添加内容,但我仍然希望它显示前10个。

这样做的方式完全不同吗?或者我可以以某种方式修复委托方法吗?

1 个答案:

答案 0 :(得分:2)

不是使用开始和结束更新方法,只需重新加载表视图。这意味着您没有告诉表格有关新行(以及有多少行)。

此外,在FRC上,请务必在获取请求上设置获取限制,以使其不会获取超过所需的数据。