iOS数据持久化之NSUserDefaults动态加载

背景

当我们用NSUserDefaults 存储数据时,对单例对象给成员变量复制时,会重写set,get方法。重复代码多。

怎样动态添加属性并自动添加到NSUserDefaults 里。

原理

通过runtime 动态获得到成员变量名称,并通过@dynamic 手动添加set,get方法,并自动映射。实现自动保存NSUserDefaults里。

代码使用

1、XPPreferences 文件夹直接拖到工程中。

2、子类继承XPPreferences。

3、.h添加属性

@property (nonatomic, assign) BOOL isLogin;

@property (nonatomic, assign) NSString *appkey;

@property (nonatomic, assign) NSInteger pressCount;

@property (nonatomic, assign) float user_id;

4、.m添加@dynamic

@dynamic isLogin;

@dynamic appkey;

@dynamic pressCount;

@dynamic user_id;

5、初始化默认值(也可以不设置)

- (instancetype)init

{

    if (self = [super init]) {

        NSDictionary *registrationDictionary = @{

                                                 @"isLogin"    :@NO,

                                                 @"appkey"    :@"",

                                                 @"pressCount" :@8,

                                                 @"user_id"  : @1

                                                 };

        [[NSUserDefaults standardUserDefaults] registerDefaults:registrationDictionary];

    }

    return self;

}

6、项目中直接可以用了

[Preferences sharedInstance].appkey = @"我是appkey";

7、注意事项 

a、成员变量用assign 修饰

@property (nonatomic, assign) NSString *appkey;

b、每个变量要写@dynamic

8、GitHub demo https://github.com/tiantianios/XPPreferences.git

      有问题留言或者给我发邮件1269456913@qq.com

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值