我有这段代码:
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
代码不是,那是新的,这就是崩溃的原因,但我不确定为什么?
答案 0 :(得分:3)
您的Entry
和EntryTableInfo
类似乎是托管对象(NSManagedObject
的子类)。
托管对象应仅在托管对象上下文(NSManagedObjectContext
对象)内“生存”。特别是它们应该只在这种背景下创造。
您的[Entry create]
方法可能会这样做,但[[EntryTableInfo alloc] init]
会创建一个没有上下文的托管对象,这是错误的。
尝试查看[Entry create]
方法实现代码并以类似方式创建EntryTableInfo
实例。