我在應用程序委託級別實例化一個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的回答是正確的。但是在這個編輯屏幕上創建一個子上下文也不會是一個錯誤的方法,在那裏插入新的對象,並且只有在用戶確認時纔將其保存到父上下文中。否則,把孩子扔掉,你就完成了。 –