我试图创建一个临时的托管对象上下文,并在用户放入信息的几个屏幕后,我将该上下文与主上下文合并(以确保没有“不完整”对象被插入)。这是我创造我临时的上下文,我怎么插入一个对象:NSManagedObject的managedObjectContext属性为零
if (!self.someManagedObject) {
NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:@[[NSBundle mainBundle]]];
NSPersistentStoreCoordinator *storeCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
[storeCoordinator addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:nil];
NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator:storeCoordinator];
self.someManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"SomeObject" inManagedObjectContext:managedObjectContext];
NSLog(@"%@", self.someManagedObject.managedObjectContext);
}
这是viewDidLoad
的一部分。在控制台中,它显示托管对象上下文有一个值。
然而,在此之后右if语句(即使在viewDidLoad
,self.someManagedObject.managedObjectContext
是零。我可以看到为什么局部变量将不再提供(它只是超出范围),但被管理对象的属性应该还是设置吧?
我知道我可以创建一个用于存储管理对象上下文的属性,但我宁愿让它以这种方式工作。
是'someObject'与'someManagedObject'相同吗? – aforaudrey 2012-08-02 23:04:17
哎呀,是的。我先放了'someObject',但后来想澄清它是一个NSManagedObject。 – 2012-08-02 23:35:01
你已经检查过'self.someManagedObject'是否为非零?假设'insertNewObject ...'失败或者你的属性是特殊的,那将解释你所看到的。 – Tommy 2012-08-02 23:44:47