NSUserDefault的使用

NSUserDefaults用来存储类似用户的配置等一些比较小的数据,模拟器/真机保存在沙盒路径的Library——>Preferences文件夹中

一、创建NSUserDefaults对象

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

二、创建NSUserDefaults对象之后即可往里面添加数据,它支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型,如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储:

NSArray  *arr = [[NSArray alloc] initWithObjects:@"arr1", @"arr2", nil]
[userDefaultset setObject:arr forKey:@"arrItem"];
[userDefaultset setObject:@"admin" forKey:@"user_name"];
[userDefaultset BOOL:@YES forKey:@"auto_login"];
[userDefaultset Integer:1 forKey:@"count"];

三、往NSUserDefaults添加数据后,它们就变成了全局的变量,App中即可读写NSUserDefault中的数据:

NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];
NSLog(@"arrItem=%@",  [mySettingDataR objectForKey:@"arrItem"]);
NSLog(@"user_name=%@",  [mySettingDataR objectForKey:@"user_name"]);
NSLog(@"count=%d",  [mySettingDataR integerForKey:@"count"]);

四、如果想删除某个数据项,可以使用removeObjectForKey删除数据:

[mySettingData removeObject ForKey:@"arrItem"];

五、需要注意的是,NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘:

[mySettingData synchronize];

六、若是写入自定义类,应该在类实现以下两个方法

- (id)initWithCoder:(NSCoder *)coder  {
     if(self = [super init]) {
        // your code
        self._firstName = [coder decodeObjectForKey:@"_firstName"];          
        self._lastName = [coder decodeObjectForKey:@"_lastName"];     
     }
       return self; 
 }  

- (void)encodeWithCoder:(NSCoder *)coder  {
    // your code
    [coder encodeObject:_firstName forKey:@"_firstName"];      
    [coder encodeObject:_lastName forKey:@"_lastName"];     
 }

七、然后再存取时通过NSData做载体:

 BusinessCard *bc = [[BusinessCard alloc] init]; 
 NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
// 将对象转换成NSData
NSData *udObject = [NSKeyedArchiver archivedDataWithRootObject:bc];  
[ud setObject:udObject forKey:@"myBusinessCard"]; 
 udObject = nil; 
 udObject = [udobject ForKey:@"myBusinessCard"];
// 将NSData转换成对象
bc =  [NSKeyedUnarchiver unarchiveObjectWithData:udObject] ;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,238评论 30 472
  • 关于首选项和设置 首选项是您持久存储的信息,并用于配置您的应用程序。应用程序通常会向用户公开偏好设置,以便他们自定...
    nicedayCoco阅读 1,063评论 0 0
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 3,510评论 2 4
  • 最近被某人说自己太悲观,太消极,太着急,这样过得很累。对别人缺乏更多的包容,连他也快受不了我了。 是的,对于好多事...
    Refreshment阅读 136评论 0 0
  • 这两天连续看了两篇有关村上春树的文章,一篇是写如何成为小说家,一篇写了他的人生,在此之前,只知道村上是个很出名的作...
    hyuk_tt阅读 197评论 0 0