最近在使用iOS的可變數組時出現了一個錯誤,報錯信息為: reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object' 字面的意思就是可變數組的方法發送給了一個不可變的對象。 聲明和初始 ...
最近在使用iOS的可變數組時出現了一個錯誤,報錯信息為:
reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object'
字面的意思就是可變數組的方法發送給了一個不可變的對象。
聲明和初始化的代碼如下:
//聲明 NSMutableArray *dataArray; //初始化 dataArray = [NSMutableArray array];
通過分析dataArray,發現只有在向伺服器請求數據後,對dataArray進行了賦值,想來問題就是應該出現這裡了。
[manager POST:requestUrl parameters:jsonDictionary success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"json: %@", responseObject); dataArray = responseObject; [self.tableView reloadData]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"%@", error); }];
所以問題應該是responseObject這個返回值是一個不可變的數組,在賦值後,dataArray也變成了不可變的數組。
如果想繼續使用,做些處理就可以了,例如:
dataArray = [NSMutableArray arrayWithArray:dataArray];
參考:http://stackoverflow.com/questions/22381384/ios-error-nscfarray-removeobjectatindex-mutating-method-sent-to-immutable