[NSUserDefaults standardUserDefaults]

本地存储数据常用有三种方式:数据库、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值