我正在编写一个基本UITableView
的应用,其中显示从NSManagedObject
加载的CoreData
。
还有一个正在运行的后台流程,并使用viewController
NSNotificationCenter
对CoreData
NSManagedObject
的任何更改通知NSInserted
(IE:使用Updated
/ {{ 1}} / DeletedObjectsKey
)。关于在视图收到更改数据通知后更新tableView
的最佳方法,我有几个问题。
最好是在reloadData
上调用tableView
或者找出数据上的差异,并在tableview.BeginUpdates()
- {{1}内执行插入/删除/更新}}
在用户与tableView endUpdates()
进行互动时刷新tableView
是否有效?
我是否有一种简单的方法可以在tableView
CoreData
的两个数组之间进行差异并应用于NSManagedObject
?
我希望我没有过于复杂的事情
答案 0 :(得分:0)
这取决于。如果您只想刷新没有任何动画的数据,请使用reloadData
。在建立用户友好的平滑数据更改动画的情况下,最好用一些漂亮的动画来计算差异和插入/删除行
用户无法无限地与tableView
进行互动。您可以跟踪表格何时不拖动并更新数据,但刷新视图以显示实际数据是当今常见的做法。例如,在网络上它是AJAX技术。另外,正如我在1中提到的,使用动画吸引用户注意新数据
正如评论中所述,在您使用NSFetchedResultsController
的情况下会更好