NSUserDefaults类介绍
最近在做自动登录的页面,准备准备用一个全局变量来保持是否为自动登录,后来发现NSUserDefaults是个不错的选择
NSUserDefaults类非常好用,它在程序沙盒中保存一个plist文件,具体名字为:com.公司名.程序名.plist。NSUserDefaults非常好用,哪里需要NSUserDefaults数据,就在那里创建一个NSUserDefaults对象,然后进行读写操作。
- NSUserDefaults是一个单例
- 不是所有的东西都能往里放的。NSUserDefaults只支持:基本数据类型(floats,doubles,integers,booleans和URLs),NSString, NSNumber, NSDate, NSArray, NSDictionary.如果把一个自定义的类存到一个NSArray里,然后再存到NSUserDefaults里也是不能成功的。如果你想存储其它类型的对象,可以考虑将其转换成一个NSData的实例(当然要实现NSCoding的protocol才行,NSObject<NSCoding>)
- 系统会将plist文件保存在该应用的/Library/Preferences/gongcheng.plist文件中
- NSUserDefaults不是立即写入,而是根据时间戳定时把缓存中的数据写入本地。所以常常,用synchornize方法强行写入
代码:
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; //写入数据 [userDefault setBool:NO forKey:@"isonline"]; [userDefault setInteger:111 forKey:@"id"]; [userDefault synchronize]; //强行写入本地
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; //读取数据 BOOL isonline = [userDefault boolForKey:@"isonline"]; NSInteger id = [userDefault integerForKey:@"id"]; NSLog(@"%d %d", isonline, id);
更详细的内容可以查看这两个网页: