标签:
NSUserDefaults首选项文件(在/Library/Preferences下)不能超过100K,否则考虑用CoreData
UserDefaults不是立即写入,而是根据时间戳定时的把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了。出现以上问题。可以通过调用synchornize方法强制写入。
存储:
NSUserDefaults:存储简单的东西(一些软件参数设置:偏好设置)
NSKeyedArchiver:保存一些相对复杂的对象(数据量不能太大)
SQLite:数据量大,效率高
CoreData:不建议使用,效率低
如果你想保存其他类型,如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
通过一些工具,可以很方便的打开和修改它。所以我不建议用它来保存一些关键信息,因为这样太容易被破解了。
标签:
原文地址:http://www.cnblogs.com/dengchaojie/p/4743430.html