我保存了我的托管对象。但是我的NSManagedObjectID在保存后仍然是临时的。为什么呢?
dispatch_async(privateQueue, ^{
__block NSMutableArray *ids = [NSMutableArray array];
[[[LPAppDelegate instance] privateContext] performBlockAndWait:^{
if ([responseObject isKindOfClass:[NSDictionary class]]) {
id arr = ((NSDictionary*)responseObject)[@"results"];
for (int i=0; i < ((NSArray *)arr).count; i++) {
LPFilm *film = [LPFilm MR_createEntityInContext:privateContext];
[ids addObject:film.objectID];
}
}
NSError *error = nil;
[privateContext save:&error];
if (error) {
NSLog(@"___fetch service error: %@", [error localizedDescription]);
}
}];
for (NSManagedObjectID *objID in ids) {
if (objID.isTemporaryID) {
NSLog(@"__tempID %@", objID);
}
}
});
答案 0 :(得分:1)
保存更改时,新的NSManagedObject
实例会获得新的对象ID。以前存在的NSManagedObjectID
实例未就地转换,它们将替换为新实例。但是您必须向托管对象询问其新ID。
在您的情况下,您在保存之前保存了一组对象ID。即使您保存更改,这些对象也永远不会更改。但是,如果您回到托管对象并再次询问他们的对象ID ,您将获得不同的结果,这不是暂时的。