1

我一直在使用 Core Data。我正在写一个纸牌游戏,我能够存储和检索游戏统计数据。我还在每次移动后存储游戏的状态,以允许应用程序在应用程序退出时恢复正在进行的游戏,并促进我的自制撤消系统。

不幸的是,我玩游戏的时间越长,感觉就越慢。我认为这是因为每次移动后我都会在 SqlLite 中存储 52 张卡片及其特定状态。我怀疑我塞进数据库的数据越多,这就越慢。

因此,我打算尝试使用 Core Data 中内置的撤消管理。(我不记得这是在那里,直到我最初的实施为时已晚。)我的问题是,如果应用程序在游戏中途关闭,是否可以在相同状态下使用撤消管理重新启动它?

IE:想象一个用户在这个游戏中做了十步。他们将能够撤消十次。如果他们退出应用程序并完全关闭它然后重新启动应用程序,我可以将 Core Data 恢复到用户仍然可以执行十个撤消步骤的状态吗?

一些研究表明,当应用程序关闭时,我可以简单地使用 NSCoding 将 NSManagedObjectContext 持久化到序列化文件中,然后在应用程序重新启动时从该文件恢复它的状态。

我在正确的道路上吗?有什么建议么?

谢谢!

4

1 回答 1

0

NO UndoManager 不是持久的。是的,您可以使用 NSCoding 甚至 Plist 来保存状态。

有关此主题的更多信息,您可以参考 http://www.cimgf.com/2011/10/11/core-data-and-the-undo-manager/

于 2012-11-12T19:15:38.063 回答