在 iPhone 中永久存储数据通常是使用 Core Data 或 sqlite3 完成的。大多数人更喜欢使用 NSUserDefaults 作为应用程序首选项的存储,而不是将其用作普通数据库(例如 sqlite)。
我发现 NSUserDefaults 可以存储大量数据,它非常易于使用并且速度很快。那么为什么不将其用作永久存储呢?
NSUserDefaults 作为数据库有哪些限制?
Update:
我经常使用三种不同的方式将数据保存到磁盘。
- 核心数据
- 将对象序列化到 plist
- NS用户默认值
我不再使用 FMDB(或直接使用 sqlite)。
每种方法的主要优点和缺点是什么?
我遇到的 NSUserDefaults 的一些优点:
- 使用 NSPredicate 可以轻松完成排序、分组等。
- NSUserDefaults 是线程安全的。
- 只需一行即可获取数据并将其保存到 NSUserDefaults。
Sqlite3 对于保存大型数据库和访问数据库元素更有用。您可以对Sqlite3数据库的项目进行排序,您可以非常快速地搜索Sqlite3数据库中的项目。 Sqlite3数据库有很多特权NSUserDefaults
没有!
NSUserDefaults 与 Sqlite3 https://stackoverflow.com/questions/930239/nsuserdefaults-vs-sqlite3
NSUserDefaults 用于用户偏好,通常是基本对象,如 NSString 或 NSNumber。 Sqlite、序列化属性列表中的对象集合或 Core Data 都是存储用户数据(例如您创建的模型对象)的有效选项。
您不会看到速度差异,但最好还是为您正在做的事情选择正确的机制。如果只是首选项,则使用 NSUserDefaults,否则我会将您的对象序列化到 plist。如果您是 Cocoa 的新手,我会首先避免使用 Core Data 甚至 Sqlite,以便让自己有机会先学习基础知识。
NSUserDefaults 或 Sqlite http://www.roseindia.net/answers/viewqa/Mobile-Applications/11914-NSuserDefault-or-Sqlite.html
当您想要存储大量具有某种关系的数据时,请选择 Sqlite;如果您想存储较少的值,请选择 NSUserDefaults。 Sqlite 会占用一些内存,因此只有在真正需要保存复杂数据时才使用它。
使用NSUserDefaults保存大量游戏数据 http://www.cocos2d-iphone.org/forum/topic/9934
通常 NSUserDefaults 用于保存游戏设置。要保存游戏数据,通常最好使用 SQLite,或者您可以创建对象的 NSDictionary 并保存到磁盘,这里有几篇文章可能会有所帮助:
http://www.cocos2d-iphone.org/forum/topic/9308 http://www.cocos2d-iphone.org/forum/topic/9308罢工>
http://www.cocos2d-iphone.org/forum/topic/9210 http://www.cocos2d-iphone.org/forum/topic/9210罢工>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)