iOS数据持久化之使用NSUserDefaults存储数据

iOS数据持久化之使用NSUserDefaults存储数据

做者:  发布日期:2014-09-26 21:04:37sql


Tag标签:数据  缓存

  • 1.用处:NSUserDefaults用来存储相似用户的配置、程序设置信息等这些的数据spa

    iOS下能够使用NSUserDefault、NSKeyedArchiver、sqlite、CoreData几种经常使用的方式来存储数据,其中NSUserDefaults用来存储相似用户的配置等这些的数据,后二者用户存储大批量和比较复杂的数据。.net

    NSUserDefault 基本上支持全部的原生数据类型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。若是要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储。code

    2.用法:sqlite

    NSUserDefault的使用比较简单:对象

    A类页面:rem

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];get

    [userDefault setObject:@“北京” forKey:LASTCITY];it

    [userDefault synchronize];

    B类页面:

     

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

    NSString *lastCity = [userDefault objectForKey:LASTCITY];

    3.细节用法:

     

    若是要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储:

     

    1. NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];

    2. NSLog(@"arrItem=%@", [mySettingDataR objectForKey:@"arrItem"]);

    3. NSLog(@"user_name=%@", [mySettingDataR objectForKey:@"user_name"]);

    4. NSLog(@"count=%d", [mySettingDataR integerForKey:@"count"]);

      若是想删除某个数据项,能够使用removeObjectForKey删除数据:

       

    1. [mySettingData synchronize]; 运行上面的语句后,NSUserDefaults中的数据即被写入到.plist文件中,若是是在模拟器上运行程序,能够在Mac的/Users/YOUR-USERNAME/Library/Application Support/iPhone Simulator/4.1/Applications/YOUR-APP-DIR/Library/Prefereces目录下面找到一个文件名为YOUR-Bundle_Identifier.plist的plist文件,用Xcode打开该文件,能够看到刚才写入的数据。

      四、针对同一个关键字对应的对象或者数据,能够对它进行重写,重写以后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。

    1. [mySettingData removeObjectForKey:@"arrItem"];

       

      须要注意的是,NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出致使的数据丢失,能够在写入数据后使用synchronize强制当即将数据写入磁盘:

       

    1. NSArray *arr = [[NSArray alloc] initWithObjects:@"arr1", @"arr2", nil]

    2. [mySettingData setObject:arr forKey:@"arrItem"];

    3. [mySettingData setObject:@"admin" forKey:@"user_name"];

    4. [mySettingData setBOOL:@YES forKey:@"auto_login"];

    5. [mySettingData setInteger:1 forKey:@"count"];往NSUserDefaults添加数据后,它们就变成了全局的变量,App中便可读写NSUserDefault中的数据:

相关文章
相关标签/搜索