我有一个选项卡式应用程序,它有 2 个选项卡和 2 个 UITableView。
我也有 2 个 NSFetchedResultsController 类型的对象,但它们都在同一个实体上,具有不同的排序和不同的获取限制。
当我从 Internet 下载更多对象并将它们插入数据库时​​,我的 NSFetchedResultsController 类型对象将忽略 fetchLimit。对于第一个,我将 fetchLimit 设置为 10,对于第二个,我将 fetchLimit 设置为 50。最初我在数据库中有 10 个对象。一切安好。在我下载了更多 40 个对象后,第一个也加载了更多 40 个对象,但它的 fetchLimit 为 10。

这有什么问题?

最佳答案

NSFetchedResultsController 忽略 fetchLimit,以防它观察到上下文更改。

我认为,当您仅限于 fetchlimit 时,通过 momc 观察正确更新表并不是那么简单的操作。

解决方案 #1

因此,如果发生大更新,您应该重新获取数据。

所以你应该在 FRC 委托(delegate)中做这样的事情:

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
   [self.tableView endUpdates];
   if (bigChangesPeformed) {
     NSError * error;

     // Re-fetching to get correct fetch limit
     [self.fetchedResultsController performFetch:&error];
     if (error) {
        // bla-bla-bla
     }
     [self.tableView reloadData];

   }
}

关于objective-c - NSFetchedResultsController 在 performFetch 后忽略 fetchLimit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9022580/

10-09 09:38