【问题标题】:Illegal attempt to establish a relationship in core data在核心数据中建立关系的非法尝试
【发布时间】:2010-11-30 04:52:44
【问题描述】:

我正在尝试在后台线程上的两个对象之间建立关系,而 Core Data 不断触发“建立关系的合法尝试”

这是正在发生的事情的一些基本代码:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
 @synchronized(self) {
  return persistentStoreCoordinator;
 }
 return nil;
}
- (void)startBackgroundTask {
 [self performSelectorInBackground:@selector(backgroundTask:) withObject:managedObjectID];
}
- (void)backgroundTask:(NSManagedObjectID *)pManagedObjectID {
 NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init];
 [managedObjectContext setPersistentStoreCoordinator:[self persistentStoreCoordinator]];
 NSManagedObject *object = [managedObjectContext objectWithID:pManagedObjectID];
 NSManagedObject *childObject = [NSEntityDescription insertNewObjectForEntityForName:@"ChildObject" inManagedObjectContext:managedObjectContext];
 [object setValue:childObject forKey:@"childObject"];
 [managedObjectContext save:nil];
}

我正确地创建了一个“线程安全”的后台线程托管对象上下文并通过对象 ID 获取对象,所以不确定它为什么不工作。

还比较 [object managedObjectContext] 上下文结果是否为“真”相等条件。

非常感谢任何帮助,

-罗伯特

【问题讨论】:

    标签: objective-c cocoa core-data


    【解决方案1】:

    这是相当愚蠢的。

    在我的代码与我提出的这个示例中,我创建了一个瞬态对象,而不是将它插入到后台托管对象上下文中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多