gpt4 book ai didi

iphone - NSUserDefaults 的限制是什么?

转载 作者:IT老高 更新时间:2023-10-28 11:38:48 26 4
gpt4 key购买 nike

在 iPhone 中永久存储数据通常使用 Core Data 或 sqlite3 完成。大多数人更喜欢使用 NSUserDefaults 作为应用程序偏好的存储,而不是将其用作普通数据库(例如 sqlite)。

我发现 NSUserDefaults 可以存储大量数据,它非常好用而且速度很快。那么为什么不将其用作永久存储呢?NSUserDefaults 作为数据库有什么限制?

更新:
我经常使用三种不同的方式将数据保存到磁盘。

  • 核心数据
  • 将对象序列化为 plist
  • NSUserDefaults

我不再使用 FMDB(或直接使用 sqlite)了。每种方法的主要优点和缺点是什么?

我遇到的 NSUserDefaults 的一些优点:

  • 使用 NSPredicate 可以轻松完成排序、分组等操作。
  • NSUserDefaults 是线程安全的。
  • 只需一行代码即可获取数据并将其保存到 NSUserDefaults。

最佳答案

Sqlite3 对于保持大型数据库和访问数据库元素更有用。您可以对Sqlite3 数据库的项目进行排序,您可以非常快速地在Sqlite3 数据库中搜索项目。 Sqlite3 数据库有很多 NSUserDefaults 没有的权限!


NSUserDefaults vs Sqlite3

NSUserDefaults 用于用户偏好,通常是基本对象,如 NSString 或 NSNumber。 Sqlite、序列化属性列表中的对象集合或 Core Data 都是存储用户数据(例如您创建的模型对象)的有效选项。

您不会看到速度差异,但最好还是为您正在做的事情选择正确的机制。如果只是偏好,那么使用 NSUserDefaults,否则我会将您的对象序列化为 plist。如果您是 Cocoa 的新手,我会首先避免使用 Core Data 甚至 Sqlite,让自己有机会先学习基础知识。


NSUserDefaults or Sqlite

当你想存储大量的有某种关系的数据时,如果你想存储较少的值,就选择 Sqlite,选择 NSUserDefaults。 Sqlite 占用一些内存,所以只有在你真正需要保存复杂数据时才使用它。


Using NSUserDefaults to save a lot of game data

通常 NSUserDefaults 用于保存游戏设置。要保存游戏数据,通常最好使用 SQLite,或者您可以创建对象的 NSDictionary 并保存到磁盘,这里有几篇文章可能会有所帮助:

  1. <罢工> http://www.cocos2d-iphone.org/forum/topic/9308
  2. <罢工> http://www.cocos2d-iphone.org/forum/topic/9210

关于iphone - NSUserDefaults 的限制是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com