4

我刚刚开始使用 RubyMotion,据我所知,它建议将 NSUserDefaults 用于数据存储。这对我来说似乎有点奇怪,因为它的名字暗示它应该只用于存储配置变量等而不是对象。

可以将我的对象(例如用户、公司、任务等)存储在 NSUserDefaults 中还是应该使用其他方法?

4

4 回答 4

6

用户默认值通常可以存储少量不需要加密的数据。大数据或可能随时间增长的数据应该进入文件系统或核心数据。任何需要保密的东西(例如密码)都必须进入keychain

这是一个答案,其中包含有关如何为您的应用选择存储模型的建议

于 2013-03-23T13:15:55.627 回答
3

NSUserDefaults应该用于保存应用程序的用户首选项。它不是一般的数据存储。NSUserDefaults 类参考声明:

默认系统允许应用程序自定义其行为以匹配用户的偏好。例如,您可以允许用户确定应用程序显示的度量单位或自动保存文档的频率。

因此,如果您的应用程序管理用户、公司和任务,则不要使用NSUserDefaults它。

于 2013-03-23T13:15:19.587 回答
1

NSUserDefaults类提供了方便的方法来访问常见类型,例如floatsdoublesintegersBooleansURLs

默认对象必须是属性列表,即(或集合的实例组合)的实例:NSDataNSStringNSNumberNSDateNSArrayNSDictionary

如果要存储任何其他类型的对象,通常应将其归档以创建NSData.

有关更多详细信息,请参阅NSUserDefaults 类参考

于 2013-03-23T13:15:32.717 回答
0

请参阅https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/UserDefaults/AboutPreferenceDomains/AboutPreferenceDomains.html上的指南

问题与 RubyMotion 无关,而与 Cocoa touch 无关。

通常,用户默认设置只是用户的偏好设置,仅此而已。不要在那里存储需要保护的数据。请勿存储偏好设置以外的数据。保持小。

这不是存储其他东西(例如您的对象)的合适位置。

于 2013-03-23T13:15:10.013 回答