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() を介して、モデルの「対多」関係を介してコースにアクセスします。(つまり、courses_rel)。これはすべて、両方のビューの初期表示で正常に機能します。
vc3もうまく機能します。ユーザーは、選択した任意の年に新しいコースを追加できます。
これが私の問題です。ユーザーが vc3 経由で新しいコースを追加してから vc2 に切り替えると、新しいコースが表示されず、以下のエラーが表示されます。変更はコースデータベーステーブルで行われたが、vc2 のテーブルビューは「年」テーブルからロードされているため、エラーが発生していることはわかっています。コースではなく「年」を扱っているため、「didChangeObject」やその他の関連メッセージを取得することはありません。ただし、グループ化された各セクションの本体はコースのリストです。
ユーザーが vc2 に移動するとすぐにコース テーブル (vc3) の変更が反映されるようにするにはどうすればよいですか?
新しいフェッチ操作と [view reloadData] を viewWillLoad 関数に配置しましたが、これはコースではなく年のフェッチであるため、効果はありません。
これは、ユーザーが vc3 でコースを追加した後に vc2 に切り替えたときに発生するエラーです。
CoreData: エラー: 重大なアプリケーション エラーです。-controllerDidChangeContent: の呼び出し中に、NSFetchedResultsController のデリゲートから例外がキャッチされました。無効な更新: セクション 0 の行数が無効です。更新後の既存のセクションに含まれる行数 (3) は、更新前にそのセクションに含まれる行数 (2) に、その数をプラスまたはマイナスした値と等しくなければなりません。そのセクションに挿入または削除された行数 (0 挿入、0 削除)、およびそのセクションに移動された、またはそのセクションから移動された行数 (0 移動、0 移動)。userInfo (ヌル)