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);

更详细的内容可以查看这两个网页:

http://blog.csdn.net/lixuwen521/article/details/7967376

http://www.cfanz.cn/index.php?c=article&a=read&id=49538

posted @ 2013-08-14 08:33  15.10  阅读(238)  评论(0编辑  收藏  举报