2012-04-27 5 views
1

私はこのコードを持っている:異なるコンテキストでオブジェクト間の関係を確立しようとする不正な試み..なぜこのエラーが発生しますか?

Entry *entry = [Entry create]; 

NSOrderedSet *media = [[NSOrderedSet alloc] init]; 
entry.media = media; 

EntryTableInfo *entryTableInfo = [[EntryTableInfo alloc] init]; 
entry.entryTableInfo = entryTableInfo; 

[[CoreDataStore mainStore] save]; 

をそして、それは保存するとき、それは私にエラーIllegal attempt to establish a relationship between objects in different contextsを与えています。

NSOrderedSetコードが既にあり、うまくいきました。 EntryTableInfoコードは新しいものではなく、クラッシュの原因になっていますが、その理由はわかりません。

答えて

3

EntryEntryTableInfoのようなクラスは、管理オブジェクト(サブクラス:NSManagedObject)です。

管理対象オブジェクトは、管理対象オブジェクトコンテキスト(NSManagedObjectContextオブジェクト)内でのみ「生きる」必要があります。特に、それらはそのような文脈によってのみ、またそのような文脈の中で作成されるべきである。

あなたの[Entry create]メソッドはそうかもしれませんが、[[EntryTableInfo alloc] init]はコンテキストのない管理対象オブジェクトを作成しますが間違っています。

[Entry create]メソッドの実装コードを見て、同様の方法でEntryTableInfoインスタンスを作成してみてください。

関連する問題