2012-10-14 36 views
0

我有一個適用於iOS的通用Core Data應用程序。每次改變時,我都會調用NSManagedContext中的save,所以所有的改變都會被移動到數據庫中。在我將核心數據中的上下文保存後,我可以撤銷操作嗎?

據我所知,我只能撤銷託管上下文的更改,但不能從數據庫中取消更改。我對嗎?

我想要的是立即提交所有更改到數據庫,並能夠撤消拉斯維加斯行動。那可能嗎?

我看到的唯一選擇是不提交最後一次更改,即將最後一次更改留在NSManagedContext中,因此我可以撤消該更改。但是這個想法有一個問題,如果程序崩潰或者用戶做了備份(使用iTunes或者iCloud),那麼這個最後的改變將會消失。你是否同意我的觀點?我如何讓數據始終在數據庫中提交,並且同時有可能撤銷最後的更改?據我所知,這是不可能的使用核心數據。我希望我錯了。

嗯,我想知道你對此的看法。謝謝。

回答

-1

是的,有可能通過NSUndoManager,你必須手動NSManagedContext

NSUndoManager *undoManager = [[NSUndoManager alloc] init]; 
[managedObjectContext setUndoManager:undoManager]; 
[undoManager release]; 

退房這個帖子:http://www.ioslearner.com/undo-redo-support-core-data-nsundomanager/。您可以輕鬆修改代碼以在選擇和撤消/重做時保存。

+0

問題是,保存或提交後撤消。在這種情況下,上下文管理器中沒有任何東西,所以什麼都不能撤消。 – Ricardo

+0

然後,也許你需要實現你自己的撤銷機制... – atxe

相關問題