NSUserDefaults的简单使用

2017-08-24  本文已影响11人  被风吹乱的思念

1.NSUserDefaults简介

1.iOS下可以使用NSUserDefaults、sqlite、CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂的数据。
创建NSUserDefaults对象之后即可往里面添加数据,它支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型,如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储

2.NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的是一些信息,这时候就不能直接存储到NSUserDefaults了

2.使用

~ 如果想要将上述数据类型的数据永久保存到NSUserDefaults中去,只需要简单的操作(一个Value 一个Key ),例如,想要保存一个NSString的对象,代码实现为:


    //将NSString 对象存储到 NSUserDefaults 中

    NSString *passWord = @"1234567";

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    [user setObject:passWord forKey:@"userPassWord"];

~ 将数据取出也很简单,只需要取出key 对应的值就好了,代码如下:


    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    NSString *passWord = [ user objectForKey:@"userPassWord"];

3.注意点

注意:对相同的Key赋值约等于一次覆盖,要保证每一个Key的唯一性值得注意的是:

NSUserDefaults 存储的对象全是不可变的(这一点非常关键,弄错的话程序会出bug),例如,如果我想要存储一个 NSMutableArray 对象,我必须先创建一个不可变数组(NSArray)再将它存入NSUserDefaults中去,代码如下:

 NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"123",@"234", nil];

    NSArray * array = [NSArray arrayWithArray:mutableArray];
    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    [user setObject:array forKey:@"记住存放的一定是不可变的"];

取出数据是一样的,想要用NSUserDefaults中的数据给可变数组赋值先给出一个错误的写法:

/*-------------------------错误的赋值方法-------------------*/

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    //这样写后,mutableArray 就变成了不可变数组了,如果你要在数组中添加或删除数据就会出现bug

    NSMutableArray *mutableArray = [user objectForKey:@"记住存放的一定是不可变的"];

正确的写法:

/*-------------------------正确的赋值方法-------------------*/

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    //可以用alloc 方法代替

    NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:[user objectForKey:@"记住存放的一定是不可变的"]];

谢谢!

上一篇下一篇

猜你喜欢

热点阅读