我有两个基本相同的fetchedResults控制器的视图。或者让我们说同样的"查询"来自数据库。一种是编辑数据,另一种只显示数据。现在,如果我在第一个视图控制器中更改日期,我的第二个视图不会更新。如果我在显示视图中添加这些代码行:
- (void)viewWillDisappear: (BOOL)animated {
[super viewWillDisappear:animated];
self.fetchedResultsController = nil;
self.budgetDatabase = nil;
}
它有效。如果视图重新出现并显示新数据(遗憾的是由于提取而导致一些延迟),它始终会重新获取。但是,如果您在视图控制器之间更改太快,我的应用程序会崩溃,因为可能此删除和数据库的新设置以及获取结果控制器的速度并不快。 那么当我的编辑视图中发生某些变化时,如何更新我的显示视图呢? [self.tableview reloadTableView]没有工作......
答案 0 :(得分:0)
我建议您将数据模型移出控制器。当您有多个想要访问相同数据的控制器时,这将变得特别有用。不必协调更新,而是在模型中保留单个一致的数据版本,让控制器获得显示所需的内容。
模型可以由单个对象拥有,也可以由相对全局的对象拥有,并通过app委托访问。 (我喜欢选项#1,但两者都可以。)
答案 1 :(得分:0)
是否有理由可以使用视图包含并且无需为两个视图控制器设置2个单独的FRC?它可能会在这里简化你的头痛。
可以在这里找到一篇好文章:objc.io - Issue #1 Lighter View Controllers我认为“第二个”问题显示了如果你正在使用它,如何使用tableviewcontroller。还有另一篇文章展示了CollectionViewController ......(以及Core Data)