我試圖創建一個臨時的託管對象上下文,並在用戶放入信息的幾個屏幕後,我將該上下文與主上下文合併(以確保沒有「不完整」對象被插入)。這是我創造我臨時的上下文,我怎麼插入一個對象: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