CoreData には、いくつかのエンティティを含むデータ グラフがあり、各オブジェクトはビュー コントローラーに取り込まれ、定義された画面で、いくつかの (>1) オブジェクトをポップアウトして定義画面に戻りたいと考えています。
次のコード行を使用して、ナビゲーション スタックからビュー コントローラーをポップしようとしました。
ObjectA *objectA = objectD.objectC.objectA;
NSLog(@"objectA name: %@", objectA.name);
MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil withObjectA:objectA];
[self.navigationController popToViewController:controller animated:YES];
[controller release];
objectA、objectB、objectC、objectD はすべて、データ グラフのオブジェクトです (逆の関係で、objectC を介して objectD から objectA をクエリで返すことができます)。
次のエラー メッセージが表示されます。
Assertion failure in -[UINavigationController popToViewController:transition:], /SourceCache/UIKit_Sim/UIKit-984.38/UINavigationController.m:1807
ここで 2 つの質問があります。
- 2 つのオブジェクトが異なる場合、どうして同じ名前になったのでしょうか? 逆の関係は、MyViewController を初期化するために使用した objectA を取り戻すことはできませんか?
- 通常、popToViewController はどのように実行しますか? アプリケーションが終了したときにナビゲーションコントローラーをリロードできるように、ナビゲーションコントローラーの現在の状態を保存/ロードする方法を実装するにはどうすればよいですか? ベストプラクティスは何ですか?