在spritekit中保存锁定和解锁的游戏关卡

时间:2015-04-03 06:02:25

标签: ios objective-c swift ios7 sprite-kit

在我的spritekit应用程序中,我有包含30个级别的章节。所有级别最初都被锁定。赢得一个级别后,下一级别将被解锁。 NSUserDefaults似乎不是一个理想的选择。我尝试将数据保存在“应用程序支持”文件夹中的plist文件中,方法是为每个级别包添加一个数组,并为每个级别提供一个值(1或0,具体取决于级别的状态)。这似乎也不理想,因为它可以编辑,并将通过更新重置。

我的目标是通过应用更新保留此数据,并且用户无法轻松编辑。对此有什么好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

NSUserDefaults实际上是一种非常好的存储数据的方法。毕竟你只是在谈论存储BOOL值。除非用户删除应用程序,否则在应用程序更新期间不会重置或删除NSUserDefaults。这在iPhone iOS Programming Guide,更新期间保存的文件(第114页)中说明:

  

当用户下载应用更新时,iTunes会将更新安装在新的应用目录中。然后,在删除旧安装之前,它会将用户的数据文件从旧安装移动到新的app目录。

正如Whirlwind已经评论过的,有很多方法可以存储数据。以下是处理各种存储方法的先前question的链接。

答案 1 :(得分:0)

您可以序列化您的属性列表并将其作为数据存储到NSUserDefaults中。您也可以在存储之前对其进行加密,以确保没有人可以以任何方式对其进行修改。

用于plist序列化的Apple Docs https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/PropertyLists/SerializePlist/SerializePlist.html