【发布时间】:2012-08-02 23:00:07
【问题描述】:
我正在尝试创建一个临时托管对象上下文,在用户输入信息的几个屏幕之后,我将该上下文与主上下文合并(以确保没有插入“不完整”的对象)。这就是我创建临时上下文以及在其中插入对象的方式:
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 内也是 nil。我可以看到为什么局部变量不再可用(它只是超出了范围),但托管对象的属性应该还是定的吧?
我知道我可以创建一个属性来存储托管对象上下文,但我宁愿让它以这种方式工作。
【问题讨论】:
-
是
someObject和someManagedObject一样吗? -
哎呀,是的。我先放了
someObject,但后来想澄清它是一个NSManagedObject。 -
你检查过
self.someManagedObject不是零?假设insertNewObject...失败或您的属性是特殊的,这将解释您所看到的。 -
是的,
self.managedObject仍然有正确的值。
标签: iphone core-data nsmanagedobjectcontext