关于iOS中的NSUserDefaults系统隐藏目录

本文详细介绍了NSUserDefault的基本概念、支持的数据类型、使用方法及注意事项,并提供了存储自定义对象的具体实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.NSUserDefaults  含义:

NSUserDefaults(系统隐藏目录)用于永久保存数据,是一个单例,在程序项目中只有一个实例对象,适合存储轻量级的本地数据(如:用户名、密码等)。



2.NSUserDefaults  支持的数据类型:

NSNumber、NSString、NSDate、NSArray、NSDictionary、BOOL



3.NSUserDefaults  使用:

    NSDictionary*account =@{@"userName":@"wz",@"password":@"123456"};
    NSInteger index = [[NSUserDefaults standardUserDefaults] integerForKey:@"firstLogin"]; 
    //取对应字段的值
    [[NSUserDefaultsstandardUserDefaults]setInteger:index +1forKey:@"firstLogin"];
    //存储第一次登陆状态
    if(index == 0){
       
NSLog(@"写入账号和密码");
        [[
NSUserDefaults standardUserDefaults] setObject:account forKey:@"account"]; 
        //存储账号密码
    }
   
if(index > 0){
       
NSDictionary *account1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"account"];
       
NSLog(@"账号和密码为%@",account1);
    }

代码中首先判断是否第一个登录,若第一次就写入userName(用户名)和password(密码),存储用户名密码;第二次登录时,本地已经存储用户名和密码,就可打印出用户名和密码。


[[NSUserDefaults standardUserDefaults] setObject:account forKey:@"account"]; //存储为本地数据


NSDictionary *account1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"account"]; //取出存储的数据




注意:

Key相同会覆盖已有原有Key,必须保证Key的唯一。


NSUserDefaults存储的对象是不可变的。


自定义对象,不能直接归档。




4.NSUserDefaults  存储自定义对象:


自定义的对象可选择归档,把对象放进字典,压缩解码。


自定义对象归档方法:支持NSCoding协议,用协议的两个方法进行编码解码,然后用NSKeyedArchiver写入沙盒文件,用NSKeyedUnarchiver读取文件。


例:
将自定义的对象归档存入:

    @interface User : NSObject<NSCoding> //加入协议,实现对象归档
    @property (nonatomic, strong) NSString *userName;
    @property (nonatomic, strong) NSString *password;
    @end



    - (void)encodeWithCoder:(NSCoder *)aCoder{ //编码
    [aCoder
encodeObject:self.userName forKey:@"userName"];
    [aCoder
encodeObject:self.password forKey:@"password"];
  }
  - (
nullable instancetype)initWithCoder:(NSCoder *)aDecoder{ //解码
   
self = [super init];
   
self.userName = [aDecoder decodeObjectForKey:@"userName"];
   
self.password = [aDecoder decodeObjectForKey:@"password"]; //写在协议中,做了简单的封装
   
return self;
   }



将自定义的对象取出:

    User *user = [[User alloc] init];
    [NSKeyedArchiver archiveRootObject:user toFile:@""]; //从文件读取对象,取出来就是一个对象





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值