iOS使用UITableView重新加载数据与EndUpdate

iOS使用UITableView重新加载数据与EndUpdate,ios,uitableview,swift,core-data,Ios,Uitableview,Swift,Core Data,我正在编写一个带有基本UITableView的应用程序,其中显示从CoreData加载的NSManagedObject。 还有一个后台进程正在运行,并使用NSNotificationCenter通知viewController对CoreData NSManagedObject的任何更改,即:使用NSInserted/Update/DeletedObjects。关于在视图收到更改数据的通知后更新tableView的最佳方式,我有几个问题 在tableView上调用reloadData或找出数据的差

我正在编写一个带有基本UITableView的应用程序,其中显示从CoreData加载的NSManagedObject。 还有一个后台进程正在运行,并使用NSNotificationCenter通知viewController对CoreData NSManagedObject的任何更改,即:使用NSInserted/Update/DeletedObjects。关于在视图收到更改数据的通知后更新tableView的最佳方式,我有几个问题

在tableView上调用reloadData或找出数据的差异并在tableView.BeginUpdate-tableView EndUpdate中执行插入/删除/更新是否更好

当用户与tableView交互时刷新tableView是否有效

是否有一种我缺少的简单方法来区分两个CoreData NSManagedObject数组并应用于tableView

我希望我没有把事情复杂化

视情况而定。如果只想刷新数据而不需要任何动画,请使用重载数据。在构建用户友好的平滑数据更改动画时,最好使用一些漂亮的动画计算差异和插入/删除行

用户没有无限地与tableView交互。您可以跟踪表何时不拖动和更新数据,但刷新视图以显示实际数据是当今的常见做法。例如,在web上是AJAX技术。另外,正如我在1中提到的,使用动画来吸引用户对新数据的注意

正如评论中提到的,在您的情况下,使用NSFetchedResultsController会更好


选项4使用NSFetchedResultsController。它正是为这项任务而制作的。谢谢!我会读一些关于这个的文档。我是iOS开发新手。NSFetchedResultsController和NSFetchedResultsController委派文档都有示例代码,并且有许多教程可用如果您使用主细节应用程序模板在Xcode中创建一个新的iOS应用程序,并选择核心数据选项,那么您将免费获得一个包含所有样板代码的示例应用程序:谢谢。这比我向你解释要容易得多。根据@MartinR的评论,我选择了选项3