NSUserDefaults 写入及获取用户的自定义数据

本文介绍了如何使用NSUserDefaults来保存和读取iOS应用中的用户偏好数据,包括设置简单的偏好项以及通过编码和解码实现User类的存储,详细阐述了User类实现NSCoding协议的过程。

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

当你的app被点开的那一刻,就已经和NSUserDefaults结下了不解之缘,这篇文章给出了利用NSUserDefaults保存和提取用户数据的方法

1.偏好数据设置一般都采用这种方法

[[NSUserDefaultsstandardUserDefaults] setObject:id forKey:@""];


2.当需要保存用户的个人资料(姓名,手机号,头像,昵称,,,,,,)等信息数量比较多的时候使用上面的方式就显得有点繁杂了,这时,我们就需要把这些信息定义成一个User或者其他类然后进行保存

例如:设置一个user类 User


a-初始化它

- (id)initWithDictionary:(NSDictionary *)dic{

    self=[superinit];

    if (self) {

        //code

    }

    return self; 

}

在User类中实现<NSCoding>的代理

并实现以下二个方法:

//编码

- (void)encodeWithCoder:(NSCoder *)aCoder{

    [aCoder encodeObject:self._userName forKey:@"userName"];


}

//解码

- (id)initWithCoder:(NSCoder *)aDecoder{

    self=[super init];

    if (self) {

        self._userName=[aDecoder decodeObjectForKey:@"userName"];

    }

    return self;

}



b-保存数据到NSUserDefaults

//保存本机user

+ (void)saveDefaultsUser:(User *)u{

    //编译成二进制

    NSData *archiveData = [NSKeyedArchiverarchivedDataWithRootObject:u];

    //保存user到本机

    [[NSUserDefaultsstandardUserDefaults] setObject:archiveDataforKey:@"DefaultsUser"];

    //使内存中的缓存与用户默认系统进行同步

    [[NSUserDefaultsstandardUserDefaults] synchronize];

}


c-需要的时候将其取出

//获取本机user

+ (User *)getDefaultsUser{

    //获取userdata数据

    NSData *unarchiveData = [[NSUserDefaultsstandardUserDefaults] objectForKey:@"DefaultsUser"];

    if(unarchiveData == nil){

        return nil;

    }

    //执行二进制反编译

    User *u = [NSKeyedUnarchiverunarchiveObjectWithData:unarchiveData];

    

    return u;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值