2012-03-27 26 views
0

私はCoreDataで設定した関係に問題があります。その1対多数のテーブルは、多くの人を持つことができますが、1人の人が1つのテーブルに座ることができます。CoreDataの関係保存

私のアプリはApples CoreDataBooksの例hereに基づいています。

これは関係を処理しません。サンプルプロジェクトで 'EditingViewController.m'が表示されます。これは、ユーザーが編集してCoreDataオブジェクトの選択した属性に変更を保存する場所です。

したがって、自分の個人エンティティのname属性を編集することを選択できます。彼らは名前を入力するテキストフィールドを取得し、次に保存ボタンをタップします。

私の人物エンティティは私のテーブルエンティティとの関係がありますが、正しく保存することができず、まだどのように動作しているかを完全に理解していない可能性があります。だから、その人のテーブルを編集することを選択すると、UIPickerViewがテーブルのリストをハウリングさせてしまいました。これまでのところ、テーブルオブジェクトを取得してリストするためにフェッチリクエストを使用しました。通常、標準の属性を設定

、このようなラインが私のコードで呼ばれることになります。

[editedObject setValue:textField.text forKey:editedFieldKey];

しかし、私は関係を使用しています。この時間はこれが右、動作しないのだろうか?

だから今、私の関係が設定され、私の代わりに上記のこの方法を試してください。

[tableObject addGuestObject:(Person *)editedObject];

だから私は、選択したテーブルをうまくして、そのオブジェクトを取得すると、私は私のピッカービューを埋めフェッチ要求から、tableObject。 CoreDataBooksの例が既に私のために行ったように、editedObjectがこのビューに渡され、私たちが編集している問題の人物です。

これは私が誤解を好むところです。確かに最後のコード行と同じように、(選択された)既存のテーブルオブジェクトを取り出し、それに既存のゲストオブジェクトを追加するだけです。

しかし、これは私に、このエラーやクラッシュできます:

'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x145640 <x-coredata://2FAD62C1-382A-4398-A4CA-02B4B41DC9A5/Table/p2>''

ないへ行くか、何これを改善するために行うには完全に確かに、私はあなたが私の状況、感謝を助けることができると思います。

+0

人をテーブルMOに追加した後でコンテキストを保存していますか? – timthetoolman

+0

うん、私はそれを保存しています。 –

+0

しかし、私はそれが節約に達する前にクラッシュすると思います。私はブレークポイントを入れて、 '[tableObject addGuestObject:(Person *)editedObject];の後で直ちにクラッシュします; –

答えて

0

一般に、「実行できませんでした」とは、オブジェクトが永続ストアから削除されたが、まだそのオブジェクトへの参照が残っていることを意味します。これは、さまざまな理由で発生する可能性があります(永続ストアが変更され、オブジェクトが別のスレッドによって削除され、オブジェクトがカスケード関係の別のオブジェクトによって所有され、が削除されました)。私たちはそこからの関係についてもう少し詳しく知りたいと思っています。

+0

私は間違った管理オブジェクトのコンテキストを使用していたことが分かりました。 –