我正在使用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
beginUpdates
和endUpdates
方法。
我知道这是正确的,因为我正在向CoreData添加内容,但我仍然希望它显示前10个。
这样做的方式完全不同吗?或者我可以以某种方式修复委托方法吗?
答案 0 :(得分:2)
不是使用开始和结束更新方法,只需重新加载表视图。这意味着您没有告诉表格有关新行(以及有多少行)。
此外,在FRC上,请务必在获取请求上设置获取限制,以使其不会获取超过所需的数据。