NSUserDefaults 有多可靠?
How reliable are NSUserDefaults?
不久前我发现了 NSUserDefaults
并想:如果我可以将我的应用程序所需的信息保留为 NSUserDefaults
,为什么还要创建数据库呢?这些是我的应用程序需要的变量:
- 用户名(字符串类型)
- 赚取的硬币(Int16 类型)
- 购买的美元(Int16 类型)
- 购买的商品([String] 类型)
NSUserDefaults
作为使用数据库的替代方案有多合适?如果我确实使用 NSUserDefaults
而不是数据库,将所有 "buyable" 项目列为枚举是否合理?
NSUserDefaults 主要用于首选项而不是敏感数据。
NSUserDefaults documentation 明确指出它的主要功能是存储用户 偏好:
The defaults system allows an application to customize its behavior to match a user’s preferences.
当然,没有什么可以阻止您以其他方式使用它,它是一种非常便宜且可靠的数据读写方式,但值得一提的是,它并非设计用于存储应用程序常量和变量。
此外,如果用户查看他的应用程序容器(因此很容易编辑),您写入的所有内容都可以以纯文本形式阅读。因此,您可能不想将它用于用户可以更改以在您的游戏中获得优势的任何内容。
You might want to look into NSKeyedArchiver
用于存储可能包含您的数据的自定义对象。这将提供更大的灵活性,您可以将数据编码为 non-plain 文本格式。
不久前我发现了 NSUserDefaults
并想:如果我可以将我的应用程序所需的信息保留为 NSUserDefaults
,为什么还要创建数据库呢?这些是我的应用程序需要的变量:
- 用户名(字符串类型)
- 赚取的硬币(Int16 类型)
- 购买的美元(Int16 类型)
- 购买的商品([String] 类型)
NSUserDefaults
作为使用数据库的替代方案有多合适?如果我确实使用 NSUserDefaults
而不是数据库,将所有 "buyable" 项目列为枚举是否合理?
NSUserDefaults 主要用于首选项而不是敏感数据。
NSUserDefaults documentation 明确指出它的主要功能是存储用户 偏好:
The defaults system allows an application to customize its behavior to match a user’s preferences.
当然,没有什么可以阻止您以其他方式使用它,它是一种非常便宜且可靠的数据读写方式,但值得一提的是,它并非设计用于存储应用程序常量和变量。
此外,如果用户查看他的应用程序容器(因此很容易编辑),您写入的所有内容都可以以纯文本形式阅读。因此,您可能不想将它用于用户可以更改以在您的游戏中获得优势的任何内容。
You might want to look into NSKeyedArchiver
用于存储可能包含您的数据的自定义对象。这将提供更大的灵活性,您可以将数据编码为 non-plain 文本格式。