'-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'_崩潰提示

來源:互聯網
上載者:User
最近瀏覽功能的實現 需求:

項目中有這樣的需求,及使用者在首頁中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];    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.