我正在制作我的第一个 iOS 应用程序。我有一个问题。在我的应用程序中,我想在 Settings.plist 中保存应用程序的当前状态:已完成的级别、达到的分数、金钱、应用内购买等。问题是,我怎样才能放置这个 plist,这样如果用户更新应用程序,他/她就不会丢失这些设置。我阅读了有关应用程序沙箱的信息,但我不明白它是如何工作的,以及如何从 Xcode 管理它。
2 回答
您应该将这些设置存储在NSUserDefaults中。它们会在安装新的应用程序版本时保留,因此您不会遇到任何问题。
两点:
a) 当您通过提交同一应用的新版本在应用商店更新您的应用时,旧版本创建的文件不会丢失。因此,您可以在应用程序的 Document 或 Library 目录中存储您喜欢的任何内容,并期望它在更新后仍然存在。iTunes 不会备份或恢复 Library/Caches 目录,因此不要在其中放置任何您无法重新创建的内容。如果您提交不同版本的应用程序(不是更新,而是新应用程序,因此您在应用程序商店中有两个单独的应用程序,可能是免费的和付费的),我不知道新版本无法访问第一个版本创建的文件。
b) 用户可以轻松读取、删除或更改您在 Documents/ 或 Library/ 中创建的任何文件。这可以通过他/她的 Mac 上的应用程序来完成,例如 iExplorer(可从 macroplant.com 下载)。因此请注意,如果文件是人类可读的,即 .plist 文件,用户可以更改它以提高他/她的分数、获得更多消耗品或其他任何东西。您可以通过加密数据,或以某种方式掩盖含义,或通过某种校验和方案来防止这种情况发生,这样您至少可以检测到它已被更改。当然,这些措施中的任何一个都涉及并发症,可能不值得麻烦。
顺便说一句...如果您正在开发使用数据文件的应用程序,iExplorer 是一个很棒的调试工具。我对它没有既得利益,只是我已经学会了如何使用它并希望它继续得到支持。可能还有其他应用程序可以做同样的事情,但这个应用程序效果很好,而且快速且易于使用。