'-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'

最近浏览功能的实现

需求:

项目中有这样的需求,及用户在主页中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];
    }

}
Proxying [POST /elements] to [POST http://127.0.0.1:8100/session/3E06EDD0-507D-41DF-AC63-F4D949C01A92/elements] with body: {"using":"predicate string","value":"name == \"允许\""} [WD Proxy] Got response with status 200: {"value":[{"ELEMENT":"31000000-0000-0000-9E44-000000000000","element-6066-11e4-a52e-4f735466cecf":"31000000-0000-0000-9E44-000000000000"}],"sessionId":"3E06EDD0-507D-41DF-AC63-F4D949C01A92"} [W3C (c55273bd)] Responding to client with driver.findElements() result: [{"element-6066-11e4-a52e-4f735466cecf":"31000000-0000-0000-9E44-000000000000","ELEMENT":"31000000-0000-0000-9E44-000000000000"}] [HTTP] <-- POST /wd/hub/session/c55273bd-5ec0-4623-bd95-d26c53801e78/elements 200 336 ms - 139 [HTTP] [HTTP] --> POST /wd/hub/session/c55273bd-5ec0-4623-bd95-d26c53801e78/element/31000000-0000-0000-9E44-000000000000/click [HTTP] {"id":"31000000-0000-0000-9E44-000000000000"} [W3C (c55273bd)] Driver proxy active, passing request on via HTTP proxy [XCUITest] Executing command 'proxyReqRes' [WD Proxy] Matched '/wd/hub/session/c55273bd-5ec0-4623-bd95-d26c53801e78/element/31000000-0000-0000-9E44-000000000000/click' to command name 'click' [WD Proxy] Proxying [POST /wd/hub/session/c55273bd-5ec0-4623-bd95-d26c53801e78/element/31000000-0000-0000-9E44-000000000000/click] to [POST http://127.0.0.1:8100/session/3E06EDD0-507D-41DF-AC63-F4D949C01A92/element/31000000-0000-0000-9E44-000000000000/click] with body: {"id":"31000000-0000-0000-9E44-000000000000"} [WD Proxy] Got response with status 500: {"value":{"error":"unknown error","message":"*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil","traceback":"(\n\t0 CoreFoundation 0x000000019d0fadc0 5F4831C9-4949-34EA-B373-3F45C312B753 + 40384\n\t1 libobjc.A.dylib 0x000000019b5859a0 objc_exception_throw + 56\n\t2 CoreFoundation 0x000000019d287b44 5F4831C9-4949-34EA-B373-3F45C312B753 + 1665860\n\t3 CoreFoundation 0x000000019d284df4 5F4831C9-4949-34EA-B373-3F45C312B753 + 1654260\n\t4 CoreFoundation 0x000000019d104d04 5F4831C9-4949-34EA-B373-3F45C312B753 + 81156\n\t5 XCUIAutomation 0x0000000101352e70 __104-[XCAXClient_iOS interruptingUIElementsAffectingSnapshot:checkForHandledElement:containsHandledElement:]_block_invoke + 1008\n\t6 XCTestCore 0x0000000100d91a84 -[XCTContext _runActivityNamed:type:block:] + 244\n\t7 XCTestCore 0x0000000100d90cc8 +[XCTContext... [W3C] Matched W3C error code 'unknown error' to UnknownError [HTTP] <-- POST /wd/hub/session/c55273bd-5ec0-4623-bd95-d26c53801e78/element/31000000-0000-0000-9E44-000000000000/click 500 413 ms - 857 [HTTP]
10-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值