iOS使用UITableView reloadData vs endUpdates

时间:2015-04-17 20:17:32

标签: ios uitableview swift core-data

我正在编写一个基本UITableView的应用,其中显示从NSManagedObject加载的CoreData。 还有一个正在运行的后台流程,并使用viewController NSNotificationCenterCoreData NSManagedObject的任何更改通知NSInserted(IE:使用Updated / {{ 1}} / DeletedObjectsKey)。关于在视图收到更改数据通知后更新tableView的最佳方法,我有几个问题。

  1. 最好是在reloadData上调用tableView或者找出数据上的差异,并在tableview.BeginUpdates() - {{1}内执行插入/删除/更新}}

  2. 在用户与tableView endUpdates()进行互动时刷新tableView是否有效?

  3. 我是否有一种简单的方法可以在tableView CoreData的两个数组之间进行差异并应用于NSManagedObject

    < / LI>

    我希望我没有过于复杂的事情

1 个答案:

答案 0 :(得分:0)

  1. 这取决于。如果您只想刷新没有任何动画的数据,请使用reloadData。在建立用户友好的平滑数据更改动画的情况下,最好用一些漂亮的动画来计算差异和插入/删除行

  2. 用户无法无限地与tableView进行互动。您可以跟踪表格何时不拖动并更新数据,但刷新视图以显示实际数据是当今常见的做法。例如,在网络上它是AJAX技术。另外,正如我在1中提到的,使用动画吸引用户注意新数据

  3. 正如评论中所述,在您使用NSFetchedResultsController的情况下会更好