编辑标题
我正在使用Core Data来存储我从服务器收集的一些数据。在appDelegate
的{{1}}中,我检查应用是否需要下载新数据(来自我服务器上的版本变量)。如果它有旧信息,则下载新数据。
问题是,在我的一些观点中,我有applicationDidBecomeActive
。这些数据来自tableViews
中Core Data
中提取的一组数据中的数据。
打开应用程序时,viewDidLoad
已被调用,然后它会更新viewDidLoad
中的数据,然后当我使用Core Data
输入视图时,所有行都是错误的。在我的例子中,所有行都显示与第一行相同的图像,并且它们都没有任何文本。我在想旧的数组有一些需要重新加载的损坏的数据。当我写这篇文章时,我意识到需要再次调用tableView
。或者至少是viewDidLoad
中的代码。我不想将其移至viewDidLoad
或viewDidAppear
,因为这意味着每次都会发生这种情况。
我想过强制重启这个过程,但我读到这是不可能的,而且苹果公司拒绝强制退出。
实际上,我只需要知道如何以编程方式从willAppear
卸载所有视图,这样他们就必须再次调用AppDelegate
。或者再次强制viewDidLoad
。
答案 0 :(得分: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]