将 NSArray 存储在持久(用户)数据中



我需要使我的库存数组持久化(每次关闭并重新打开应用程序时都不会重置)。 我目前使用 GameState 单例类来存储我的高分、玩家等级等。 到目前为止,这些都是整数,使用起来非常简单。

我按照随附的有关 GameState 单例类的教程进行操作:http://www.raywenderlich.com/63578/make-game-like-mega-jump-spritekit-part-22

我现在需要存储我的库存数组,这是一个自定义的 SKSpriteNode 子类。

我可以将此数组存储在我的单例类中吗?我需要什么语法来处理它?

为了保存数组,我需要设置编码/解码吗? 我看到这是一种不同的方法,似乎比单例类复杂得多。

精通 SQL,但如果可以直接检索数组,就好像它存储在本地一样,我宁愿不使用 SQLlite。

NSUserDefaults知道NSDataNSStringNSNumberNSDateNSArrayNSDictionary,所以最简单的方法是将你需要保存的数据存储在这些数据类型的某种组合中。如果无法做到这一点,则需要在自定义类中实现NSCoding,以便将其实例存档为NSData对象,这并不像听起来那么难:http://sam.roon.io/archiving-objective-c-objects-with-nscoding。

就个人而言,我会从您的视图中拆分您的模型开始(获取 Sprite Kit 对象的"数据"部分并将它们放入单独的、仅数据的类或结构中)。这应该可以更轻松地推理需要序列化的内容。

最新更新