2010-11-30 9 views
0

Je suis en train de construire une relation entre deux objets sur un thread d'arrière-plan et les données de base continue à tirer de « tentative llegal d'établir une relation »tentative illégale d'établir une relation dans les données de base

Voici un code de base de ce qui se passe:

- (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]; 
} 

Je crée correctement un fil fond « thread-safe » géré contexte de l'objet et aller chercher l'objet via l'ID d'objet si peu sûr pourquoi il ne fonctionne pas.

Comparez également les contextes [object managedObjectContext] pour obtenir une condition d'égalité "true".

Toute aide grandement appréciée,

-Robert

Répondre

0

C'était plutôt stupide.

Dans mon code par rapport à cet exemple j'ai mis en place que je créais un objet transitoire et ne pas l'insérer dans le contexte d'objet géré en arrière-plan.