我在应用程序委托级别实例化一个NSManagedObjectContext
对象,并在我所有的UIViewController
之间共享它。下面是我用来访问它在我的视图控制器之一代码:CoreData:从NSManagedObjectContext中清除更改
NSManagedObjectContext *managedObjectContext = appDelegate.managedObjectContext;
modelObj = (Model *) [NSEntityDescription insertNewObjectForEntityForName:@"Model" inManagedObjectContext:[appDelegate managedObjectContext]];
现在,在这个屏幕上,我有一个UITableView
9行&每个单元都有一个UITextField
。当用户输入文本字段的值时,我将它们分配到modelObj
。现在,我的用户可以选择取消并放弃所有更改或将其保存到磁盘。我有保存代码工作正常。但在用户试图放弃更改的情况下,我不知道该怎么做。似乎没有一种方法可以将它们全部扔掉。
我可以想到解决这个问题的几种方法。
- 为每个控制器创建一个新的
NSManagedObjectContext
实例,而不是在整个应用程序中共享一个实例。 - 或者,我可以在我的代码中创建一堆
NSString
s并将用户值保存在其中,并且仅当用户单击保存时才调用insertNewObjectForEntityForName:
。
哪种方法是正确的?或者是否有办法让NSManagedObjectConext
放弃对它所做的所有更改?
谢谢,
Teja。
Tim Dean的回答是正确的。但是在这个编辑屏幕上创建一个子上下文也不会是一个错误的方法,在那里插入新的对象,并且只有在用户确认时才将其保存到父上下文中。否则,把孩子扔掉,你就完成了。 –