数组使用NSUserDefaults存储的问题,

本文介绍了一种使用NSUserDefault存储和读取可变数组时遇到的问题及解决方案,通过将可变数组转换为不可变数组来避免运行时崩溃。

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

最近在做搜索记录的时候,由于搜索记录是存储在本地的,而且都是字符串,我考虑到数据量也不是太大,于是就懒的使用数据库了。

 于是就想到了NSUserDefaults 存储的方式,

但是由于之间对于数组没有这样保存过,也没有考虑太多,就直接:

[[NSUserDefaults standardUserDefaults]setObject:self.searchHistoryDataArr forKey:@"SEARCHHISTORYDATA"];
    [[NSUserDefaults standardUserDefaults]objectForKey:@"SEARCHHISTORYDATA"];
    

self.searchHistoryDataArr,是我数据源,是个可变数组,我每次存储都要对这个数组进行增删改茶改查操作,

那么问题就来了,运行项目的时候,是不是的会崩溃,崩溃信息显示的是 不可变数组不能进行增删改查的操作。

我一直以为问题出在,增删改查的方法的位置,所以一直把注意力放在 这几个方法力找问题。但是无论经过我在这几个方法的位置强转类型,还是用新的可变数组操作,都是不好使。偶然的时候发现,  NSUserDefaults 不能多可变数组,或可变字典操作,只能操作不可变的。

最后位置找到 了,那就好解决了,

[NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"SEARCHHISTORYDATA"]];
 [[NSUserDefaults standardUserDefaults] setObject:self.searchHistoryDataArr forKey:@"SEARCHHISTORYDATA"];

这样就解决了。

还是由于基础不好的原因,希望能帮助到遇到同样问题的,?,

转载于:https://www.cnblogs.com/liuwenqiang/p/6111529.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值