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