我有这个代码:
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
代码,这是新代码,这是崩溃的原因,但是我不确定为什么吗? 最佳答案
看来Entry
和EntryTableInfo
类是托管对象(NSManagedObject
的子类)。
受管对象应仅在受管对象上下文(NSManagedObjectContext
对象)内部“存在”。特别是,仅应在这样的上下文中并在此上下文内创建它们。
您的[Entry create]
方法可能会这样做,但是[[EntryTableInfo alloc] init]
创建的管理对象没有上下文,这是错误的。
尝试查看[Entry create]
方法的实现代码,并以类似的方式创建EntryTableInfo
实例。