我正在尝试将对象添加到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'
有人可以帮帮忙吗?
答案 0 :(得分:2)
您从responseObject
词典中检索的对象很可能不是NSMutableArray
,而是(不可变的)NSArray
。您必须创建一个可变副本才能更改它:
//...
if (!_myArray) {
_myArray = [[responseObject objectForKey:@"data"] mutableCopy];
}
//...
答案 1 :(得分:1)
听起来AFNetworking会生成不可变对象。您应该致电-mutableCopy
,而不是直接分配-objectForKey:
的结果。
你真的打算拥有一堆嵌套数组吗?如果添加响应数组的内容而不是数组本身,似乎更有意义。
答案 2 :(得分:1)
您需要制作阵列的副本。之后,您必须使用[NSMutableArray arrayWithArray: ]
答案 3 :(得分:-1)
你的数组必须是可变数组
使用NSMutablearray代替NSArray