美文网首页
NSUserDefaults的简单使用

NSUserDefaults的简单使用

作者: 被风吹乱的思念 | 来源:发表于2017-08-24 09:16 被阅读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:@"记住存放的一定是不可变的"]];
    
    

    谢谢!

    相关文章

      网友评论

          本文标题:NSUserDefaults的简单使用

          本文链接:https://www.haomeiwen.com/subject/fqysdxtx.html