NSUserDefaults的可靠性如何?

EBD*_*KUM 0 nsuserdefaults ios

不久前,我发现NSUserDefaults并思考:如果我能保留应用程序所需的信息NSUserDefaults,为什么还要创建数据库?这些是我的应用程序需要的变量:

  • 用户名(String类型)
  • 获得的硬币(Int16类型)
  • 雄鹿买了(Int16型)
  • 购买的物品(类型为[String])

NSUserDefaults作为使用数据库的替代方案有多适合?如果我使用NSUserDefaults而不是数据库,将所有"可购买"项目列为枚举是否合理?

Ham*_*ish 5

NSUserDefaults的文件明确指出它的主要功能是存储用户的喜好:

默认系统允许应用程序自定义其行为以匹配用户的首选项.

当然没有什么可以阻止你使用它,否则它是一种非常便宜和可靠的读写数据的方式,但值得知道它不是为存储应用程序常量和变量而设计的.

此外,如果用户查看他的应用程序容器(因此可以轻松编辑),您写入的所有内容都可以以纯文本形式阅读.因此,您可能不希望将其用于用户可以更改以在游戏中获得优势的任何内容.

您可能希望查看NSKeyedArchiver存储可能包含数据的自定义对象.这将提供更大的灵活性,您可以使用非纯文本格式对数据进行编码.