I'm getting Illegal attempt to establish a relationship 'userInfo' between objects in different contexts while creating relation between two objects. But they have common Persistent coordinator and same context. Please help me to find the issue.
- (void)parser:(NSDictionary *)attributeDict
{
NSEntityDescription *ent = [NSEntityDescription entityForName:@"ThreadInfo" inManagedObjectContext:self.managedObjectContext];
// create an ThreadInfo managed object, but don't insert it in our moc yet
ThreadInfo *info = [[ThreadInfo alloc] initWithEntity:ent insertIntoManagedObjectContext:nil];
self.threadinfo = info;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"UserInfo" inManagedObjectContext:self.managedObjectContext];
fetchRequest.entity = entity;
// narrow the fetch to these two properties
NSPredicate *threadPredicate = [NSPredicate predicateWithFormat:@"userEmail == %@",[attributeDict valueForKey:@"userEmail"]];
[fetchRequest setPredicate:threadPredicate];
NSError *error = nil;
NSArray *fetchedItems = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
for (UserInfo *info in fetchedItems)
{
if([[attributeDict allKeys] containsObject:@"userEmail"])
{
if([attributeDict valueForKey:@"userEmail"]!=[NSNull null])
{
self.threadinfo.userEmail=[attributeDict valueForKey:@"userEmail"];
}
}
if([[attributeDict allKeys] containsObject:@"thread"])
{
if([attributeDict valueForKey:@"thread"]!=[NSNull null])
{
self.threadinfo.threadID=[attributeDict valueForKey:@"thread"];
}
}
if(info!=nil)
{
self.threadinfo.userInfo=info;// **CRASH HAPPENED AT THIS LINE**
[info addThreadDetailsObject:self.threadinfo];
}
ThreadInfo *tInfo = nil;
[self.managedObjectContext insertObject:tInfo];
if ([self.managedObjectContext hasChanges]) {
if (![self.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@", error);
abort();
}
}
.h
@interface batchSave : NSOperation
@property (nonatomic, strong) ThreadInfo *threadinfo;
@property (nonatomic, strong) UserInfo *userInfos;
CRASH
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Illegal attempt to establish a relationship 'userInfo' between objects in different contexts source = <ThreadInfo: 0x17dd8280> (entity: ThreadInfo; id: 0x17dda6a0 <x-coredata:///ThreadInfo/t908A5944-FCD9-422B-80D7-83B71D243FB52>