0

编辑标题

我正在使用 Core Data 存储从服务器收集的一些数据。在appDelegate'sapplicationDidBecomeActive中,我检查应用程序是否需要下载新数据(从我服务器上的版本变量)。如果它有旧信息,它会下载新数据。

问题是,在我的某些观点中,我有tableViews. Core Data这些从in 中提取的数据数组中获取数据viewDidLoad。打开应用程序时,viewDidLoad已经调用了 ,然后它更新了 中的数据Core Data,然后当我使用 输入视图时tableView,所有行都是错误的。就我而言,所有行都显示与第一行相同的图像,并且没有任何文本。我在想旧数组有一些损坏的数据需要重新加载。在我写这篇文章时,我意识到viewDidLoad需要再次调用。或者至少是viewDidLoad. 我不想把它移到viewDidAppearwillAppear,因为这意味着这种情况每次都会发生。我想过强制重启这个过程,但我读到这是不可能的,而且苹果无论如何都会拒绝强制退出。

实际上,我只需要知道如何以编程方式从 卸载所有视图AppDelegate,以便它们必须viewDidLoad再次调用。或者再强制一个viewDidLoad

4

1 回答 1

1

如果您不能使用获取的结果控制器,您可以注册NSManagedObjectContextObjectsDidChangeNotification

[[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(contextChanged:)
    name:NSManagedObjectContextObjectsDidChangeNotification
    object:theManagedObjectContext];

并仅在必要时重新加载数据:

- (void)contextChanged:(NSNotification *)note
{
    // reload your table data
}

不要忘记删除观察者,例如dealloc

[[NSNotificationCenter defaultCenter] removeObserver:self]
于 2012-09-02T15:21:37.093 回答