【发布时间】:2011-02-16 16:12:45
【问题描述】:
在我的 UIView 中,我有一个由 NSFetchedResultsController (NSFRC) 控制的 UITableView (UITV)。 UIView 在 UINavigationController 中。
当视图即将被加载/显示时,我启动了一些后台活动,这些活动从远程服务器 (JSON) 获取数据并解析为核心数据。
当解析完成并且线程化的 NSManagedObjectContext 被合并到主上下文中时,NSFRC 被调用。
问题在于,有时会同时向 Core Data 插入许多行,添加大量表格单元格,从实际获取和解析完成到显示行之间存在相当长的延迟。
现在我想知道是否有人知道任何解决方案,例如:
- 将微调器连接到某个“获取的结果控制器在这次插入其所有行”(或某事)通知/委托调用,以至少告诉用户“某事将很快出现”?
或者最好的解决方案是在后台获取和处理完成之前不初始化 NSFRC?
谢谢!
【问题讨论】:
-
实际花费最多的时间是什么?是服务器请求还是您试图从 Core Data 中获取大量项目?如果是 fetch 拖慢了您的速度,您可以修改您的 fetch 请求,使其仅在屏幕上最初获取所需数量的项目,然后按需延迟加载其余项目。
-
NSFetchedResultsController 的 fetchRequest 的批大小目前设置为 20,但是当插入超过 20 个对象时,这些对象也会在短时间内加载到内存中。你知道有什么方法可以改变 NSFetchedResultsControllerDelegate 函数只插入可见的行(或类似的东西)。
标签: iphone ios uitableview core-data nsfetchedresultscontroller