2014-04-05 73 views
0

我試圖將對象添加到NSMutableArray。最初我將一些響應數據分配給數組,並可以在表格視圖中顯示它。加載更多數據後,嘗試將新信息添加到原始數組時,它似乎崩潰了。應用程序崩潰:將突變方法發送到不可變對象

我使用AFNetworking此:

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 

    if(!_myArray){ 
     _myArray = [responseObject objectForKey:@"data"]; 
    } 
    else{ 
     [_myArray addObject:[responseObject objectForKey:@"data"]]; 
    } 
    [self.tableView reloadData]; 
} 

我得到的錯誤如下

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object' 

任何人可以幫助這嗎?

回答

1

聽起來像AFNetworking生成不可變的對象。您應該撥打-mutableCopy,而不是直接分配-objectForKey:的結果。

另外你是否真的打算有一堆嵌套數組?看起來如果你添加了響應數組的內容,而不是數組本身,它會更有意義。

-1

你的陣列是必須的可變數組

使用的NSMutableArray代替的NSArray

2

你從responseObject字典檢索對象是最有可能不是一個NSMutableArray,而是一個(不變)NSArray。您必須創建一個可變副本才能更改它:

//... 
if (!_myArray) { 
    _myArray = [[responseObject objectForKey:@"data"] mutableCopy]; 
} 
//... 
1

您需要複製數組。之後,你必須修改該陣列使用,[NSMutableArray arrayWithArray: ]

相關問題