我正在遍历一个文本数组,每次迭代我都是:
- 使用 initWithEntity:insertIntoManagedObjectContext 创建托管对象
- 解析文本
- 确定显示顺序
新创建的对象以表格视图结束。
由于 fetchResultsController 的超酷免费功能,当调用 insertIntoManagedObjectContext 时,单元格会自动插入到 tableview 中。
问题是处理每个新对象(~20ms)有轻微的延迟,并且文本行的顺序与正在更新的表格视图的顺序不同。这使得屏幕闪烁,因为所有单元格都弄清楚了它们的显示顺序,其他单元格迅速插入到它们后面。(如果不清楚,我可以发布这个效果的视频,我没想到会这么难描述。)
获取文本行并首先将它们解析到另一个数组中,然后将该数组插入到 moc 中是合乎逻辑的,但我不能,因为这些是托管对象,我不能只分配它们 - 我必须调用 initWithEntity:insertIntoManagedObjectContext,它会自动将单元格插入到 tableview 中。
在 didChangeObject 方法中取出 insertRowsAtIndexPaths:withRowAnimation 并在迭代完成时调用 reloadData 不起作用。(应该是?)
我只希望在创建所有对象之前不要更新表。 我看不到使用 fetchResultsController 的方法,即使没有它会很简单。正如我经常提出的关于 SO 的问题一样——我在这里错过了什么?