我正在使用 FetchedResultsController 为我的 UITableView 获取数据。数据是通过在另一个选项卡上执行的操作创建的(因此我的表可能有 5 个项目,但如果我切换选项卡并返回我的表,它可能有超过 5 个应该显示的项目)。我的表可能包含许多行。现在我在 viewDidLoad 中使用 [myFetchedResultsController performFetch]。看来,当我在另一个选项卡中创建数据时,当我切换回我的表选项卡时,新数据会自动放入我的表中,而无需我执行 [myFetchedResultsController performFetch]再次。以下是我的问题:
1) fetchedResultsController 是否会自动监视 manajedObjectContext 的更改并在新对象存在时获取它们?(这似乎是正在发生的事情,但我只是想确定一下。也许我有一些代码可以帮助我做到这一点,但我忘记了我放在某个地方)
2) [myFetchedResultsController performFetch] 执行的提取是在当时提取所有对象,还是只提取它可以放入表视图中的内容,然后在需要时提取其余部分(当您滚动时桌子)?我问是因为因为我的表可能有很多行,如果一次只在表上显示约 12 个数据,一次获取所有数据似乎效率低下。
编辑:我刚刚意识到在我的 FetchedResultsController 委托方法中,我有
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
[self.tableView reloadData];
}
我是否正确地说 fetchedResultsController 监视更改,但除非像我所做的那样重新加载表,否则不会将其应用于表?如果是这样,那么我还有一个关于 UITableView 的问题。重新加载表是否只重新加载视图中的行,然后在滚动时更新其他行?我再次问,因为如果我的数据非常大,如果它一次重新加载所有行,重新加载整个表似乎效率低下。