码迷,mamicode.com
首页 > 其他好文 > 详细

NSUserDefaults

时间:2015-08-19 23:12:54      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

NSUserDefaults首选项文件(在/Library/Preferences下)不能超过100K,否则考虑用CoreData

 

UserDefaults不是立即写入,而是根据时间戳定时的把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了。出现以上问题。可以通过调用synchornize方法强制写入。

 

存储:

NSUserDefaults:存储简单的东西(一些软件参数设置:偏好设置)

NSKeyedArchiver:保存一些相对复杂的对象(数据量不能太大)

SQLite:数据量大,效率高

CoreData:不建议使用,效率低

 

  • model将账号归档起来,<NSCoding>
  • encode
  • initWith
  • tool  save() NSKeyedArchiver
  • 沙盒里有Documents (Temp Lib) NSSearchPathForDirectories

 

 

如果你想保存其他类型,如UIImage,你应该进行编码(即archive),或者将它转换为NSData、NSNumber或者NSString。

 

NSUserDefaults只能保存诸如NSArray、NSDictionary、NSData、NSNumber等基本数据类型,如果我们强制保存自定义的类,就会出现这个错误:Attempt to set a non-property-list object as an NSUserDefaults value for ,解释起来:【试图将一个非属性列表对象设置为 NSUserDefaults】接下来就说说如何吧自定义的对象保存到NSUserDefaults中去。

怎么接收NSUserDefaultsDidChangeNotification

那个方法只是通知了默认值的改变,要得到这个通知的具体内容还需要下面的代码:NSNotificationCenter *center= [NSNotificationCenter defaultCenter]; [center addObserver:self selector:@selector(defaultsChanged:) name:NSUserDefaultsDidChangeNotification object:nil];  

 

NSUserDefaults数据存储的位置

  NSUserDefaults用于保存iPhone程序的数据,使用非常方便。

  那么这些数据最终存放在什么地方呢?存放于一个plist文件中。这个文件位于

  <UUID for your App>\Library\Preferences\<your App‘s bundle ID>.plist

  通过一些工具,可以很方便的打开和修改它。所以我不建议用它来保存一些关键信息,因为这样太容易被破解了。

NSUserDefaults

标签:

原文地址:http://www.cnblogs.com/dengchaojie/p/4743430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!