【问题标题】:iOS can I implement "Save Game" functionality using NSUserDefaults?iOS 我可以使用 NSUserDefaults 实现“保存游戏”功能吗?
【发布时间】:2014-01-09 12:19:35
【问题描述】:

我正在查看这个关于 how to store custom objects in NSUserDefaults 的问题,并且很感兴趣 NSUserDefaults 的速度或大小限制是否会阻止我将单个保存游戏文件存储在用户默认值中?

例如:

我正在考虑存储:最多 112 个实体,每个实体可以拥有最多 17 个项目的“库存”,最多 512 个项目的一般库存。这将被序列化/解码或包装在 JSON 字符串中。

假设整个数据大小为 5 Mb - 我可以在用户默认值中存储这么多吗?将这么多信息存储/写入用户默认值时会不会有很长的延迟?

当然,我可以实现一个核心数据堆栈,但是对于单个存档游戏来说这样做似乎有点过头了。

【问题讨论】:

  • 将数据存储在 plist 文件中。对于这个数据量,比 NSUserDefaults 更好。
  • 把核心数据想得更像——我是否需要同时加载所有这些数据。如果没有,请考虑。如果是,请考虑直接保存到文件(JSON 或 plist)。
  • 只是出于好奇,有没有什么方法可以保存整个应用程序状态,然后直接恢复它,而无需进行保存游戏?

标签: ios iphone objective-c save nsuserdefaults


【解决方案1】:

Apple 不建议在首选项中存储大量数据。一个示例是为什么将首选项存储在 iCloud 中以同步所有设备上的首选项。

following link

在“使用 iCloud 键值存储的策略”部分中,您可以找到以下内容:

每个应用在键值存储中的总空间限制为 1 MB。 (还有一个单独的每个键限制为 1 MB,最多允许 1024 个键。)因此,您不能使用键值存储来共享大量数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多