数组使用NSUserDefaults存储的问题,

Posted 佛系码农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组使用NSUserDefaults存储的问题,相关的知识,希望对你有一定的参考价值。

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

 于是就想到了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"];

这样就解决了。

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

以上是关于数组使用NSUserDefaults存储的问题,的主要内容,如果未能解决你的问题,请参考以下文章

(Swift) 将数组存储和检索到 NSUserDefaults

如何使用 NSUserDefaults 在 Swift 中存储自定义类数组?

本地存储数组 (Swift)

NSUserDefaults存储自定义对象

NSUserDefaults NSMutable 数组未在会话之间保存

iOS 中 关于 NSUserDefault中存储可变数组的问题