使用核心数据,我在各种方法之间传递 objectID 以执行各种操作。我似乎有一个错误,因为对象 ID 是临时的,即使强制它成为永久的也是如此。
NSManagedObjectContext *context=[(id)[[UIApplication sharedApplication] delegate] theContext];
__block MyObject *myObject;
[context performBlockAndWait:^(void){
myObject= [NSEntityDescription insertNewObjectForEntityForName:@"MyObject" inManagedObjectContext:context];
myObject.name=@"thename";
[(id)[[UIApplication sharedApplication] delegate] saveTheContext];
}];
NSLog(@"is temporary before calling obtainpermanentid=%d",[myObject.objectID isTemporaryID]);
BOOL b=[context obtainPermanentIDsForObjects:[NSArray arrayWithObject:myObject] error:nil];
NSLog(@"is temporary after calling obtainpermanentid=%d",[myObject.objectID isTemporaryID]);
在这种情况下,我希望在保存后获得一个永久的 objectID。这没有发生,我试图通过调用 gainPermanentIDsForObjects(返回 true)来强制执行此操作,但之后该对象仍然有一个临时 ID。
关于什么条件可能导致对象 ID 保持临时性的任何想法?