我是否可以将我的对象(例如用户、公司、任务等)存储在NSUserDefaults中,或者应该采用其他方法?
用户默认设置通常适用于存储不需要加密的小量数据。那些大量数据或可能随时间增长的数据应该放到文件系统或核心数据中。任何需要保密的内容(例如密码)必须放入keychain。
NSUserDefaults
应该用于保存应用程序的用户偏好设置,而不是一般的数据存储。苹果公司的 NSUserDefaults 类参考资料 中提到:
默认系统允许应用程序根据用户的喜好自定义其行为。例如,您可以允许用户确定应用程序显示的测量单位或文档自动保存的频率。
因此,如果您的应用程序管理用户、公司和任务,则不要使用 NSUserDefaults
。
NSUserDefaults类提供了访问常见类型的便捷方法,例如floats
、doubles
、integers
、Booleans
和URLs
。
默认对象必须是属性列表,即(对于集合而言)NSData
、NSString
、NSNumber
、NSDate
、NSArray
或NSDictionary
的实例组合。
如果您想存储任何其他类型的对象,通常应将其存档以创建NSData
的实例。
更多详细信息,请参见NSUserDefaults Class Reference。
问题与RubyMotion无关,与Cocoa Touch有关。
通常,用户默认设置只是用户的偏好设置,仅此而已。不要在那里存储需要保护的数据。不要存储除偏好设置以外的数据。保持它小巧。
这不是存储其他东西(如对象)的合适位置。