1 つの家を持つことができる Person という名前のエンティティと、1 ~ N 個の家を持つことができる Home という名前のエンティティがあります。
次に、2 つのアレイ コントローラーがあります。
- 管理対象オブジェクト コンテキストにバインドされたホーム コントローラー、エンティティ モード: ホーム。
- エンティティ モードの管理対象オブジェクト コンテキストにバインドされた People コントローラー: person。
People Controller にバインドされたセル ベースのテーブル ビューがあります。最初の 3 つの列 (名前、姓、年齢) を正常に表示できますが、問題は 4 番目の列 (家の名前) にあります。ポップアップ ボタン セル、これらはバインドです。
- 内容: 家 Controller.arrangedObjects ;
- コンテンツ値: ホーム Controller.arrangedObjects.name;
- 選択したオブジェクト: People Controller.home。
ポップアップボタンをクリックしてホームを選択しようとすると、実行時に問題が発生します。
ご覧のように、選択肢の代わりに「Core data Relationship fault」が表示されます。メニュー項目をクリックしてホームを変更しようとすると、コンソールに多くのコードが出力され、最も重要な行のみが投稿されます。
2012-11-04 01:47:45.181 Test[4390:303] [<NSManagedObject 0x100156e60> valueForUndefinedKey:]: the entity Home is not key value coding-compliant for the key "(null)".
そして、この後、アプリケーションがフリーズします。
編集:いくつかのデバッグにより、例外が発生したときのオブジェクトの状態を知ることができるようになりました:
2012-11-09 02:42:02.495 Test[4650:303] <NSManagedObject: 0x100157460> (entity: Person; id: 0x10013d9d0 <x-coredata:///Person/t0182F6F4-9CCC-4F51-A82F-D00CE026DB752> ; data: {
age = 20;
home = "0x101953480 <x-coredata:///Home/t0182F6F4-9CCC-4F51-A82F-D00CE026DB753>";
name = "New Name";
surname = "New Surname";
})
2012-11-09 02:42:02.497 Test[4650:303] <NSManagedObject: 0x101953420> (entity: Home; id: 0x101953480 <x-coredata:///Home/t0182F6F4-9CCC-4F51-A82F-D00CE026DB753> ; data: {
name = "New Home";
people = (
"0x10013d9d0 <x-coredata:///Person/t0182F6F4-9CCC-4F51-A82F-D00CE026DB752>"
);
値は規則的で、nil キーはないようです。問題はバインディングにあると思われます。