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は新しいです、そしてそれがクラッシュの原因です、しかし私は理由がわかりませんか?

4

1 に答える 1

3

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

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

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

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

于 2012-04-27T17:38:40.523 に答える