获取' - [__ NSCFArray removeObjectAtIndex:]:在尝试重新排序UITableView中的单元格时发送到不可变对象的变异方法

Mon*_*oor 2 uitableview ios afnetworking

我正在AFNetworking用来获取单元格中的JSON数据UITableView.我已经将数组声明为NSMutableArray,但是-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object当我尝试重新排序单元格时,我仍然会收到错误并且应用程序崩溃了.

这是我用于重新排序的逻辑 -

-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath
 toIndexPath:(NSIndexPath *)toIndexPath {

NSString *item = [self.jobsArrayFromAFNetworking objectAtIndex:fromIndexPath.row];
[self.jobsArrayFromAFNetworking removeObject:item];
[self.jobsArrayFromAFNetworking insertObject:item atIndex:toIndexPath.row];


}
Run Code Online (Sandbox Code Playgroud)

我试图查找之前正在回答的解决方案,但无法理解.谁能告诉我这里出了什么问题?谢谢!

Nik*_*uhe 8

您的@property jobsArrayFromAFNetworking要么用a初始化,NSArray要么声明copy.

两者都会导致此错误消息,因为支持ivar将指向(不可变)NSArray.

如果您声明属性是NSMutableArray类型,则使用strong存储修饰符而不是copy.

  • 是的,这通常只是一个不可变的(普通)`NSArray`.你必须分配一个可变副本,而不是:`self.jobsArrayFromAFNetworking = [[responseObject objectForKey:@"all"] mutableCopy];` (5认同)