[NSUserDefaults standardUserDefaults]

来源:互联网 发布:计算器的java代码 编辑:程序博客网 时间:2024/05/29 02:44
本地存储数据常用有三种方式:数据库、NSUserDefaults和文件。

NSUserDefaults用于存储数据量小的数据,例如用户配置。并不是所有的东西都能往里放的,只支持:NSString,NSNumber,NSDate, NSArray, NSDictionary,自定义类可以通过NSData的方式进行存储,当然要实现NSCoding这个protocol才行,NSObject<NSCoding>,详细方法可以查看类文件。

NSUserDefaultsstandardUserDefaults用来记录一下永久保留的数据非常方便,不需要读写文件,而是保留到一个NSDictionary字典里,由系统保存到文件里, 系统会保存到该应用下的/Library/Preferences/gongcheng.plist文件中。需要注意的是如果程序意外退出,NSUserDefaultsstandardUserDefaults数据不会被系统写入到该文件,所以,要使用[[NSUserDefaultsstandardUserDefaults] synchronize]命令直接同步到文件里,来避免数据的丢失。


下面贴出代码:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaults setObject:@"value"forKey:@"key"];

//[[NSUserDefaults standardUserDefaults]setObject:@"value" forKey:@"key"];

[defaults synchronize];//保存

NSString *testStr = [defaults objectForKey:@"key"];

NSLog(@"testStr is: %@",testStr);

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

在使用NSUserDefaults的时候,


NSDictionary* defaults = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];

NSLog(@"Defaults: %@", defaults);

可以获得设备上的所有的NSUserDefaults的设置。



也可以保存自定义类,分享个链接http://zani.iteye.com/blog/1431239

原创粉丝点击