1

我正在尝试使用 NSFetchedResultsController 从 UITableView 中的 CoreData 获取 10000 条记录,并尝试使其尽可能快(因为请求具有排序描述符,因此获取这么多数据需要更长的时间)。

我正在尝试使用第一个和主要 NSFetchedResultsController(在表的委托方法中使用)从 CoreData 获取 100 条记录,这些记录显示在表上,而在另一个队列中,我在 viewDidAppear 中开始另一个获取 auxiliarFRC 上的所有 10000 条记录。在 AuxFRC 中的提取结束后,我将 AuxFRC 分配给主 FRC,以便传输所有记录并重新加载表。

我的问题是 UITableView 卡在第一个加载的行,直到 AuxFRC 结束提取,即使我分派 performFetch,我也不明白为什么会发生这种情况,或者如果这种方式是错误的,还有什么其他方式可以用来获取 10000 条记录如果数据发生变化并保持最新状态?

4

2 回答 2

1

我猜问题出在 NSManagedObjectContext - 这不是线程安全的,我对两个提取都使用了同一个。我创建了原始副本的副本,并在第二个上下文中更改了 AuxFRC。这解决了一切。

于 2013-02-18T14:52:00.980 回答
0

诀窍是使用 FRC 的缓存机制并协调异步获取与显示线程。

一切都总结在这个答案中。

于 2013-02-15T15:32:16.320 回答