NSUserDefaults 存储可变数组问题

废话不多说上代码,项目中遇到的问题是:

NSMutableArray * arrayLoginNames = [NSMutableArray array];

arrayLoginNames  = [[NSUserDefaults standardUserDefaults] mutableArrayValueForKey:KLastLoginNameForAutoSendMsgToKeFu];

这句话取出了数组,可是当对数组添加元素后,进行存储时卡在了下面这句话:

[[NSUserDefaults standardUserDefaults] setObject:arrayLoginNames forKey:KLastLoginNameForAutoSendMsgToKeFu];

把主线程卡主,但是不崩溃,不知道为何,就Google了,stackoverflow给了解答办法,

When you store mutable objects to NSUserDefaults, it stores an immutable copy of it so you can't change it directly like that. You have to get the mutable copy out of defaults, change it, and then set it back, replacing old object in defaults.

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; NSMutableArray *mutableArrayCopy = [[prefs objectForKey:@"theArray"] mutableCopy]; [mutableArrayCopy addObject:@"some new value"]; [prefs setObject:mutableArrayCopy forKey:@"theArray"];

[[NSUserDefaults standardUserDefaults] synchronize];

 

 

转载于:https://www.cnblogs.com/daaiwusehng/p/4878922.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值