2012-11-12 70 views
1

我一直在用Core Data弄溼我的腳。我正在寫一款紙牌遊戲,我可以存儲和檢索遊戲統計數據。我還會在每次移動後存儲遊戲的狀態,以允許應用程序在應用程序退出時恢復正在進行的遊戲,並且還可以幫助我的自制撤消系統。核心數據撤銷管理在應用程序重啓過程中是否起作用?

不幸的是,我玩遊戲的時間越長,感覺就越慢。我認爲這是因爲在每次移動之後,我都在SqlLite中存儲了52張牌和他們的特定狀態。我懷疑這只是越來越慢,更多的數據我擠進數據庫。

因此,我打算嘗試在Core Data中使用內置的撤消管理。 (我不記得這是在那裏,直到我最初的實現爲時已晚)。我的問題是,如果應用程序在遊戲中關閉,是否可以在同一狀態下使用撤消管理重新啓動?

IE:假設用戶在這個遊戲中做了十步棋。他們將能夠撤消十次。如果他們退出應用程序並完全關閉它,然後重新啓動應用程序,我可以將Core Data返回到用戶仍能夠執行十個撤消步驟的狀態嗎?

有一點研究表明,當應用程序關閉時,我可以簡單地使用NSCoding將NSManagedObjectContext保存到序列化文件中,然後在重新啓動應用程序時從該文件恢復其狀態。

我在正確的道路上嗎?有什麼建議麼?

謝謝!

回答

0

否UndoManager不是持久的。 是的,你可以使用NSCoding或甚至Plist來保存狀態。

有關此主題的更多信息,你可以參考 http://www.cimgf.com/2011/10/11/core-data-and-the-undo-manager/

+0

這是優秀的信息,正是我一直在尋找。我還沒有能夠測試這一點,因爲我必須解決一些其他問題與我的核心數據實施。一旦我確認NSCoding正常工作,我將其視爲已接受。 –

+0

好的,在進一步檢查了問題後,我可以看到你的答案在技術上是正確的。不,UndoManager不是持久的,並且不符合NSCoding。所以我不能以我能想到的任何方式堅持它的狀態。但是,NSManagedObjectContext符合NScoding,因此可以保留。但是,這並不能真正解決我的問題。 –

相關問題