我有这个代码:

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代码,这是新代码,这是崩溃的原因,但是我不确定为什么吗?

最佳答案

看来EntryEntryTableInfo类是托管对象(NSManagedObject的子类)。

受管对象应仅在受管对象上下文(NSManagedObjectContext对象)内部“存在”。特别是,仅应在这样的上下文中并在此上下文内创建它们。

您的[Entry create]方法可能会这样做,但是[[EntryTableInfo alloc] init]创建的管理对象没有上下文,这是错误的。

尝试查看[Entry create]方法的实现代码,并以类似的方式创建EntryTableInfo实例。

10-08 08:26