我在Lion中使用了一项新功能,子托管对象上下文用于:“管理可放弃的编辑,例如在检查器窗口或视图中。临时托管对象ID和子托管对象上下文
当我从父MOC传递一个托管对象ID到子MOC时,如果父MOC从未保存过,我会得到一个错误:“尝试访问未在存储中找到的对象。
NSManagedObjectContext *parentContext = [(NSPersistentDocument *)[[[self window] windowController] document] managedObjectContext];
self.subMOC = [[[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType] autorelease];
[subMOC setParentContext:parentContext];
NSManagedObjectID *objectValueID = [[[self superview] valueForKey:@"objectValue"] objectID];
self.subObjectValue = [subMOC existingObjectWithID:objectValueID error:&err];
上面的工作很好,如果文档已被保存。如果没有保存,我有什么选择?
这不是一个线程安全的方法,如果它担心你。你在这里传递对象。使用托管对象ID是安全的。但是,我坚持你是一样的情况:) –