博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSUserDefaults 存储可变数组问题
阅读量:6836 次
发布时间:2019-06-26

本文共 991 字,大约阅读时间需要 3 分钟。

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

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

你可能感兴趣的文章
FJ的字符串
查看>>
关于SSI整合之CRUD
查看>>
生产者/消费者模型
查看>>
reset代码
查看>>
阿里,百度,腾讯,360,新浪,网易,小米等开源项目
查看>>
gitshell 基础操作
查看>>
HDU 1517 A Multiplication Game 博弈
查看>>
调整字符串日期的格式
查看>>
paramiko多线程远程执行命令
查看>>
vue-computed计算属性用法
查看>>
mysql学习笔记-day1
查看>>
Atcoder Beginner Contest 118 D-Match Matching(完全背包)
查看>>
Webapi创建和使用 以及填坑(三)
查看>>
oracle-sql系统学习-ddl-dml
查看>>
java创建文件写入内容,并实现下载该文件
查看>>
C# Graphics 字体倒置
查看>>
Cisco Easy ***综合配置示例
查看>>
18岁的他从月薪2000到月薪11000经历了什么?
查看>>
Cloud Service Process Pack
查看>>
rsync应用拓展多模块同步13
查看>>