'-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
2016-02-26 11:49
429 查看
最近浏览功能的实现
需求:
项目中有这样的需求,及用户在主页中push进入下一级页面浏览信息,然后到“我的”页面有个最近浏览的功能,显示最近浏览过的数据,最多3条。思路:
1、在浏览详情页纪录ID数组,存储到NSUserDefault中;1.1、先取出NSUserDefault中的数据,判断是否为空;
1.2、为空,则说明之前没有数据,那么初始化数组,添加数据,保存;
1.3、不为空,则说明之前有数据,判断这词浏览的ID是否在数组中;
若在,则先删除重复元素,若不在,则不做操作;
1.4、判断数组的count是否大于等于3;
若大于等于3,则删除第一个元素,若非,则不做操作;
2、在我的页面,从NSUserDefault中取出数组,请求网络,拿到数据显示;
问题:
在我存储ID数组的时候,第一次存储正确,但是第二次的时候,进到这个页面就崩溃了,我是真的不理解啊。错误提示:
‘-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object’错误原因:
意思是变的方法发送给一个不变的对象(不懂耶)。修改方法:
再声明一个可变数组2,对可变数组2进行数据操作。。。。修改后的代码:
#pragma mark - 最近浏览 - (void)nearlyLookCarWithModel:(DetailChooseCarModel *)detailModel { //取出数组 NSMutableArray *array = [[NSMutableArray alloc] init]; array = [[NSUserDefaults standardUserDefaults] objectForKey:MYLOOKCAR]; if (array) { NSLog(@"not nil"); //存在此数组 NSMutableArray *mArr = [[NSMutableArray alloc] initWithArray:array]; NSLog(@"上次的mArr:%@", mArr); //保存成字典,包含CID、phono、title NSDictionary *carDic = [NSDictionary dictionaryWithObjectsAndKeys:self.cid,@"cid", detailModel.main_photo,@"imgName", detailModel.car_subject,@"title",nil]; if ([mArr containsObject:carDic]) { NSLog(@"包含重复元素"); //删除重复元素 [mArr removeObject:carDic]; } if ([mArr count] >= 3) { NSLog(@">3"); //删除第一个元素 [mArr removeObjectAtIndex:0]; } [mArr addObject:carDic]; NSLog(@"这次的mArr:%@", mArr); //操作数组 [[NSUserDefaults standardUserDefaults] setObject:mArr forKey:MYLOOKCAR]; }else { NSLog(@"nil"); //初始化mArr NSMutableArray *mArr = [[NSMutableArray alloc] init]; //保存成字典,包含CID、phono、title NSDictionary *carDic = [NSDictionary dictionaryWithObjectsAndKeys:self.cid,@"cid", detailModel.main_photo,@"imgName", detailModel.car_subject,@"title",nil]; [mArr addObject:carDic]; [[NSUserDefaults standardUserDefaults] setObject:mArr forKey:MYLOOKCAR]; } }
相关文章推荐
- 使用ObjectAnimator开发打开、关闭书本动画
- Objective-C Runtime的数据类型
- buffer object,render buffer,framebuffer
- 自动释放池详解
- object.observe数据绑定
- C#面向对象(Object-Oriented Programming)
- 《从零开始学Swift》学习笔记(Day 70)——Swift与Objective-C混合编程之Swift与Objective-C API映射
- Mybatis配置报错元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHandlers?,objectFa
- js如何获取object类型里的键值
- Objective-C(Cocoa)中NSNumber、NSValue,NSNull类的简单应用
- Object之超级奶爸三
- 从别人写的 Object-C 中 Singleton (单例) 模式 中的一些理解--备
- Objective-C中单例模式的实现-备
- Objective-C Runtime
- 绘制Objective-C程序的UML类图
- 一个自动根据xcode中的objective-c代码生成类关系图的神器
- TObject简要说明-对象的创建流程
- Delphi中JSon SuperObject 使用:数据集与JSON对象互转
- List<Map<String,Object>>去重,排序
- Objective-C中,遍历数组的四种方法