我在子上下文中插入一个对象并获得了objectID,然后保存了子上下文和父上下文。现在我想通过objectID获取对象,但是我只能通过子上下文获取它,但是只能通过父上下文获取它,为什么?
...
NSManagedObjectContext *childContext = [[[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType] autorelease];
childContext.parentContext = self.parentContext;
[childContext performBlock:^{
NSManagedObject *obj = [NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:childContext];
if (![childContext save:&error]) {
NSLog(@"%@", error);
}
[self.parentContext performBlockAndWait:^{
if (![self.parentContext save:&error]) {
NSLog(@"%@", error);
}
}];
NSManagedObjectID *objID = [obj ObjectID];
NSManagedObject *objTmp = [self.parentContext existingObjectWithID:objID error:&error];
// Why objTmp is nil here?
NSManagedObjectID *objIDTmp = [[[self.parentContext executeFetchRequest...] objectatindex:0] objectID];
// objIDTmp is different from objID
}];
将新对象保存到永久存储后,它将获得新的NSManagedObjectID。您可以先致电obtainPermanentIDsForObjects
获取永久性ID,然后再保存它。
[childContext obtainPermanentIDsForObjects:@[obj] error:&error];
NSManagedObjectID *objID = [obj ObjectID];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句