appdelegate
passes modelview
to each tab controller
|
|
/ \
/ \
/ \
/ \
/ \
/ \
vc1 vc2
show list show grouped
of years table with years
| as headers and
| courses within
vc3 each year
list courses
in selected
year
|
|
add new
course to
selected
year
在 vc1 和 vc2 中,我从核心数据模型中读取的实体都是“年”。在“numberOfRowsInSection()”等例程中,我通过模型中的“对多”关系通过 NSSet() 访问课程。(即课程_rel)。所有这些都适用于两个视图的初始显示。
vc3 也很好用。用户可以将新课程添加到任何选定的年份。
这是我的问题。当用户通过 vc3 添加新课程,然后切换到 vc2 时,新课程不显示,我收到下面提供的错误。我知道我收到了错误,因为更改是在课程数据库表中进行的,但是 vc2 中的表视图是从“年”表中加载的。它永远不会收到“didChangeObject”和其他相关消息,因为它处理的是“年”而不是课程。但是,每个分组部分的正文是课程列表!
当用户转到 vc2 时,如何立即反映课程表 (vc3) 的更改?
我在 viewWillLoad 函数中放置了一个新的 fetch 操作和一个 [view reloadData] 但同样,它是几年而不是课程,所以它没有效果。
这是用户在 vc3 中添加课程后切换到 vc2 时遇到的错误。
CoreData:错误:严重的应用程序错误。在调用 -controllerDidChangeContent: 期间,从 NSFetchedResultsController 的委托中捕获了一个异常。无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (3) 必须等于更新前该节中包含的行数 (2),加上或减去数字从该部分插入或删除的行数(0 插入,0 删除)加上或减去移入或移出该部分的行数(0 移入,0 移出)。与用户信息(空)