NSUserDefaults存储数据

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

iOS下可以使用NSUserDefault、NSKeyedArchiver、sqlite、CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂的数据。

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

2.用法:

NSUserDefault的使用比较简单:

A类页面:

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

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

[userDefault synchronize];

B类页面:

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

NSString *lastCity = [userDefault objectForKey:LASTCITY];

3.细节用法:

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

[cpp]

    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中的数据:

      [cpp]

      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删除数据:

        [cpp]

        1. [mySettingData removeObjectForKey:@arrItem];

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

          [cpp]

          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打开该文件,可以看到刚才写入的数据。

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

时间: 2024-12-16 20:39:53

NSUserDefaults存储数据的相关文章

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

原文:http://blog.csdn.net/lxinl/article/details/11770675 OS下可以使用NSUserDefaults.sqlite.CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂的数据.NSUserDefault的使用比较简单: [cpp] view plaincopy NSUserDefaults *mySettingData = [NSUserDefaults s

ios NSUserDefaults存储数据(偏好设置)

1.NSUserDefaults用于存储数据量小的数据,主要是用户配置,但也可以支持存储一些小数据包括:NSString, NSNumber, NSDate, NSArray, NSDictionary2.数据存放于一个plist文件中.这个文件位于在 app同级目录的/Library/Preferences目录下 3.NSUserDefaults主要是 setObject 和 object ForKey,大数据使用其他的存储,如Sqlite3,CoreDate等: 4.使用偏好设置对数据进行保

NSUserDefaults 存储数据到本地,NSUserDefaults 使用

//以下是我用 NSUserDefaults 将 NSData 类型的地址数组存在本地. UserAddressEntity *userAddressEntity = [[UserAddressEntity alloc]init];     userAddressEntity.addName = addName.text;     userAddressEntity.addPhone = addPhone.text;     userAddressEntity.addressInfo = [NS

NSUserDefaults(数据存储)

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯. 因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了. NSUserDefaults支持的数据格式有:NSNumber(Integer.Float

NSUserDefaults轻量级本地存储数据

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯. 因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了. NSUserDefaults支持的数据格式有:NSNumber(Integer.Float

三种数据存储 (plist,NSUserDefaults存储,NSKeyedArchiver存模型方法)

plist :一般存储一般对象:NSString,字典,数组,NSData 第一,首先要设置2个按钮,基本知识,就不在这写了,直接写按钮的触发事件来存储和读取 - (IBAction)save { // 1.获得沙盒根路径 NSString *home = NSHomeDirectory(); // 2.document路径 NSString *docPath = [home stringByAppendingPathComponent:@"Documents"]; // 3.新建数据

数组使用NSUserDefaults存储的问题,

最近在做搜索记录的时候,由于搜索记录是存储在本地的,而且都是字符串,我考虑到数据量也不是太大,于是就懒的使用数据库了. 于是就想到了NSUserDefaults 存储的方式, 但是由于之间对于数组没有这样保存过,也没有考虑太多,就直接: [[NSUserDefaults standardUserDefaults]setObject:self.searchHistoryDataArr forKey:@"SEARCHHISTORYDATA"]; [[NSUserDefaults stand

NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象

一.了解NSUserDefaults以及它可以直接存储的类型 NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前提,也是大家喜欢用它保存简单数据的一个主要原因. 使用 NSUserDefaults 存储自定义对象的最初,我们必须认识NSUserDefaults可以存储哪一些类型的数据,下面一一列出: NSUserDefaults支持的数据类型有:NSNumber(NSInteger.float.doubl

转-NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象

转自:http://my.oschina.net/u/1245365/blog/294449 摘要 NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的是一些信息,这时候就不能直接存储到NSUserDefaults了 目录[-] 一.了解NSUserDefaults以及它可以直接存储的类型 二.使用 NSUserDefaults 存储自定义对象 1.将自定义