NSUserDefaults

NSUserDefaults类概述

NSUserDefaults适合存储轻量级的本地数据,不太适合存储一些重要的数据。

因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了。

NSUserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型。


在运行时,你可以使用NSUserDefaults对象读取你的应用程序的从一个用户默认数据库使用的默认数据。NSUerDefaults缓存信息,以避免每次获取一个默认值都需要打开用户默认的数据库。同步方法,他会每隔一段时间自动调用,使内存中缓存的信息与用户默认数据库中的信息同步。

NSUserDefaults类为访问普通类型的变量提供便利的方法,这些类型有floats,doubles,integers,booleans和URLs。一个默认的对象必须是一个属性列表,是NSData,NSString,NSNumber,NSDate,NSArray或者NSDictionary的实例。如果你想存储其它类型的对象,你应当将其转换成一个NSData的实例。

用户首选项是用来保存和记录用户在操作应用的过程做做出的一些选择或设置。类似Android开发中的SharedPreference,可以存储一些数据,但基本都是简单类型的数据,主要作用都是存储一些用户设置数据,比如是否是首次登陆,就可以设置一个布尔类型的变量,设值为true或false。


NSUserDefaults的几个重要方法:

standardUserDefaults:创建共享默认设置对象的类方法(Java中的静态方法,单例)

objectForKey:返回键对象的实例方法

setObject: forKey:以指定的键设置值的实例方法

+ (NSUserDefaults *)standardUserDefaults;  
单例模式,获取NSUserDefaults的一个实例,默认Key值如下:  
AppleLanguages,  
AppleKeyboardsExpanded,  
AppleITunesStoreItemKinds,  
AppleLocale,  
AppleKeyboards,  
NSLanguages,  
NSInterfaceStyle 


从NSUserDefaults返回的值都是不可变的。即使你设置了一个可变的值。例如,你设置了一个可变的字符串作为“MyStringDefault”的值,你用stringForKey:获取到的字符串将是不可变的。       这说明当你放入可变的数据,取出为不可变,但是你不知道为不可变,假如用到了可变方法,则会报错!可变的方法赋给不可变!


NSUserDefaults类的使用

使用起来非常简单。列如:当你要存数据进去的时候:

你可以直接 
 [[NSUserDefaults standardUserDefaults] setObject:_arry forKey:@"SchArry"];
也可以先实例化一个
NSUserDefaults *account = [NSUserDefaults standardUserDefaults];
    [account setObject:_account.text forKey:@"account"];


当你要取的时候
[[NSUserDefaults standardUserDefaults] objectForKey:@"account"];

同上,也可以随便先实例化一个。

这是NSUserDefaults的基本使用,基本上也就只要用到这个就可以了,非常简单。

记得加上 
[account synchronize]; 

UserDefaults是根据时间戳定时的把缓存中的数据写入本地磁盘,而非即时写入。所以调用set方法之后数据有可能还没有写入磁盘,应用程序就已经终止了。保险期间,我们在对重要的数据保存时使用synchornize方法强制写入。
但是也要注意,不用频繁的使用synchornize,这样毕竟影响性能和效率


它存储在应用程序内置的一个plist文件里,这个可以根据路径看到。比如说这个是你的程序沙盒位置
/Users/dongdong/Library/Application Support/iPhone Simulator/7.1/Applications/0E4B8C8E-6F61-4F68-B614-90D354FE436F/Library/Preferences
Prefereces为plist文件,存储的就是userDefaults。


你可能感兴趣的:(NS数据)