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

原文:http://blog.csdn.net/lxinl/article/details/11770675

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

[cpp] view plaincopy

  1. NSUserDefaults *mySettingData = [NSUserDefaults standardUserDefaults];

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

[cpp] view plaincopy

  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] view plaincopy

  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] view plaincopy

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

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

[cpp] view plaincopy

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

时间: 2024-10-11 09:30:33

iOS 数据持久化之使用NSUserDefaults存储数据的相关文章

IOS开发--数据持久化篇之文件存储(一)

前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不胜感激. 什么叫数据持久化: 在这里我就不照搬教科书上抽象的概念了.我觉得既然要把东西写出来就让它简单明了. 要搞清楚数据持久化,首先要知道数据持久化是相对于缓存而言的,缓存是在程序运行的过程中保存在内存中,程序一旦运行结束,其内存就会被释放.缓存在内存中的数据也就随之消失. 那么数据持久化就是要解

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

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

NSUserDefaults存储数据

1.用处:NSUserDefaults用来存储类似用户的配置.程序设置信息等这些的数据 iOS下可以使用NSUserDefault.NSKeyedArchiver.sqlite.CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂的数据. NSUserDefault 基本上支持所有的原生数据类型NSString. NSNumber.NSDate. NSArray.NSDictionary.BOOL.NSInt

【Android】数据的应用-使用sharedpreferences存储数据

Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据. 1.使用SharedPreferences保存数据方法如下: //实例化SharedPreferences对象(第一步) SharedPreferences mySharedPreferences=

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

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

IOS数据持久化之NSUserDefaults

NSUserDefaults: 用来保存应用程序设置和属性.用户保存的数据.              用户再次打开程序或开机后这些数据仍然存在.              可以存储的数据类型包括: NSData.NSString.NSNumber.NSDate.NSArray.NSDictionary.             如果要存储其他类型,则需要转换为前面的类型,才能用NSUserDefaults存储. 代码如下: //保存数据 NSUserDefaults * defaults =

iOS学习笔记-数据持久化

在iOS学习过程中,有时候需要保持用户数据,比如登录信息.用户的设置选项等,这时候就需要学习数据持久化操作,本节主要学习iOS数据持久化相关的知识. 数据持久化的方式有四种: 1).写入plist文件(属性列表) 2).偏好设置 3).归档(NSKeyedArchiver) 4).NSData 下面分别举例说明四种方式的适用场合以及用法. 1. 写入plist文件(属性列表) 1.1 plist可以存储哪些数据 属性列表是一种XML格式的文件,拓展名为plist 如果对象是NSString.NS

QF——iOS中数据持久化的几种方式

数据持久化的几种方式: 一.属性列表文件: .plist文件是种XML文件.数组,字典都可以和它互相转换. 读取plist文件生成数组:plist——>NSArray 把数组写入plist文件:NSArray——>plist 二.NSUserDefaults: 它是单例的.通过[NSUserDefaults standardUserDefaults];提供唯一的实例 NSUserDefaults存储数据,本质上就是属性列表plist文件里.只不过是系统提供的,存储位置固定的,它存储在沙盒的Li

安卓数据持久化:文件存储、SharedPreferences存储以及数据库存储

Android系统中主要提供了三种方式用于简单的实现数据持久化功能: 文件存储(手机自带的内存).SharedPreferences存储以及数据库存储 当然还可以用sd卡存储 读入写出 下面是疯狂java讲义中的关于IO流的一些补充,回忆一下 1,文件存储 手机自带的内存,只能供当前应用程序访问,其他应用程序访问不了,程序卸载这些数据也会随着消失 原理: 基本是先获取一个文件的输出流,然后把信息write进去,最后关闭流 a,通过上下文类context的openFileOutput()方法获得一