App Crashing:发送到不可变对象的Mutating方法

我正在尝试将对象添加到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' 

任何人都可以帮帮忙吗?

您从responseObject字典中检索的对象很可能不是NSMutableArray ,而是(不可变的) NSArray 。 您必须创建一个可变副本才能更改它:

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

听起来像AFNetworking生成不可变对象。 你应该调用-mutableCopy而不是直接分配-objectForKey:的结果。

你真的打算拥有一堆嵌套数组吗? 如果添加响应数组的内容而不是数组本身,似乎会更有意义。

您需要制作arrays的副本。 之后你必须使用[NSMutableArray arrayWithArray: ]修改该数组

你的数组必须是可变数组

使用NSMutablearray而不是NSArray