• NSUserDefaults的使用规则


    NSUserDefaults 是iOS中用于保存数据的类之一;

    它是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用。

    NSUserDefaults支持保存的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.

    自定义的类如果想要用NSUserDefaults来保存,需要实现NSCoding协议!!!

    使用过程

    1.写入

    //将NSString 对象存储到 NSUserDefaults 中
        NSString *passWord = @"www.baidu.password.com";
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults setObject:passWord forKey:@"userPassWord"];

    2.读取

       NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
      //  将数据取出来,只需要取出key 对应的值就好了,代码如下:
        NSString *readPassWord = [userDefaults objectForKey:@"userPassWord"];
        NSLog(@"%@",readPassWord);
    
      //注意:对相同的Key赋值约等于一次覆盖,要保证每一个Key的唯一性

    ******* 重点注意的地方 *******

     NSUserDefaults 存储的对象全是不可变的!!

     例如将NSMutableString 、NSMutableArray、NSMutableDictionary 这样的数据保存在NSUserDefaults 在存储的过程中会自动的把它们的可变性去掉变成成NSString 、NSArray、NSDictionary  所以取出来后他们的数据类型也是转化后的类型!

     NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"123",@"234", nil];
        [userDefaults setObject:mutableArray forKey:@"arrKey"];
        NSLog(@"%@",[userDefaults objectForKey:@"arrKey"]);
        NSMutableArray *mArr = [userDefaults objectForKey:@"arrKey"];
        [mArr addObject:@"789"];
        //程序运行到这的时候会崩溃 reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
        NSLog(@"%@",mArr);

    开发者千万别在做项目的时候,写这样sb的代码!!!

  • 相关阅读:
    对象序列化流使用
    字符输入流结合字符打印流实现复制文件
    python 安装一些 直接使用pip无法安装的包 的方法
    linux记不住
    SIP
    uniapp不同型号手机适配
    uniapp app头部渐变
    vue安卓苹果下载链接合并
    Typescript
    Nodejs
  • 原文地址:https://www.cnblogs.com/Mgs1991/p/5140564.html
Copyright © 2020-2023  润新知