我有一個應用程序通過websocket偵聽服務器事件。當服務器發送特定事件時,我創建了一個Notification
,它是NSManagedObject
的一個子類。我稍後將它顯示在我的主視圖控制器中。用NSUndoManager強制保存NSManagedObject
在一個視圖控制器(讓我們稱之爲ObjectViewController
),我有這樣的代碼:
- (void)viewDidLoad {
[super viewDidLoad];
[((AppDelegate *)UIApplication.sharedApplication.delegate).managedObjectContext.undoManager beginUndoGrouping];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
AppDelegate * delegate = ((AppDelegate *)UIApplication.sharedApplication.delegate);
if (something) {
[delegate saveContext];
} else {
[delegate.managedObjectContext undo];
}
}
它允許我悔棋做幾個不同類型的NSManagedObjects
所有操作,當我點擊取消按鈕。
現在的問題是,當我在這個視圖中,我收到一個通知,如果我取消對象的變化,Notification
對象被從刪除CoreData。
有沒有辦法強制CoreData保存ONE通知,而其他NSManagedObjects
保留在撤消組?
看了蘋果文檔後,創建一個新的上下文作爲主要上下文的子節點,我只需要設置它的'parentContext'屬性? 我不知道我是如何生活的,不知道這個......太有用了! – Sunder
要創建它,是的,這就是你所要做的。使用它有一些缺點,但通常存在轉角情況。只要你不在子上下文中創建新對象並將其對象ID傳遞給另一個MOC,你應該沒問題。 –
好的非常感謝你的信息。但我不確定這是否真的適合我的項目:'ObjectViewController'也用於編輯對象。如果在父對象中檢索到對象,我該如何處理當前使用我的子上下文? – Sunder