背景:
項(xiàng)目中需要使用沙盒存儲(chǔ)語(yǔ)音通話的訂單編號(hào)數(shù)組跷睦,然而在使用過(guò)程中腮出,友盟分析日志輸出了這個(gè)錯(cuò)誤。
問(wèn)題所在:將一個(gè)可變的方法 發(fā)送給了一個(gè)不可變的對(duì)象
原因:
1.沙盒存儲(chǔ)只能存儲(chǔ)基本類型,int string 字典 數(shù)組等 均是不可變的
2.因此在存儲(chǔ)時(shí)候,將存入可變數(shù)據(jù)源數(shù)組 轉(zhuǎn)化為了不可變數(shù)組
3.當(dāng)再次獲取的時(shí)候,其實(shí)獲取的數(shù)據(jù)源數(shù)組本質(zhì)是不可變數(shù)組
4.因此在再次addSubject的時(shí)候 ,就提示 “將一個(gè)可變的方法 發(fā)送給了一個(gè)不可變的對(duì)象”
問(wèn)題代碼
NSMutableArray *mArray = [[NSUserDefaults standardUserDefaults] valueForKey:@"refuseArray"]; [mArray addObject:[[NSUserDefaults standardUserDefaults] valueForKey:@"orderID"]];
解決方案
NSArray *array = [[NSUserDefaults standardUserDefaults] valueForKey:@"refuseArray"]; NSMutableArray *mArray = [NSMutableArray arrayWithArray:array]; [mArray addObject:[[NSUserDefaults standardUserDefaults] valueForKey:@"orderID"]];