Ios 获得'-[\uu NSCFArray removeObjectAtIndex:]:发送到不可变对象的变异方法';在UITableView中尝试对单元格重新排序时
我使用Ios 获得'-[\uu NSCFArray removeObjectAtIndex:]:发送到不可变对象的变异方法';在UITableView中尝试对单元格重新排序时,ios,uitableview,afnetworking,Ios,Uitableview,Afnetworking,我使用AFNetworking在UITableView单元格中获取JSON数据。我已将数组声明为NSMutableArray,但仍然得到-[\uu NSCFArray removeObjectAtIndex:]:发送到不可变对象的mutating方法发生错误,每当我尝试重新排序单元格时,应用程序都会崩溃 这是我用来重新排序的逻辑- -(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromInd
AFNetworking
在UITableView
单元格中获取JSON
数据。我已将数组声明为NSMutableArray
,但仍然得到-[\uu NSCFArray removeObjectAtIndex:]:发送到不可变对象的mutating方法发生错误,每当我尝试重新排序单元格时,应用程序都会崩溃
这是我用来重新排序的逻辑-
-(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];
}
我试着查找以前回答过的答案,但不明白。有人能告诉我这里出了什么问题吗?谢谢 您的@propertyjobsArrayFromAFNetworking
要么使用NSArray
初始化,要么声明为copy
两者都会导致此错误消息,因为支持ivar将指向(不可变的)NSArray
如果您将属性声明为NSMutableArray
类型,请使用strong
作为存储修饰符,而不是copy
如何初始化jobsArrayFromAFNetworking
?@property(strong,非原子)NSMutableArray*jobsArrayFromAFNetworking这是一个声明。。。在哪里初始化对象?我在viewDidLoad方法-self.jobsArrayFromAFNetworking=[[NSMutableArray alloc]init]中声明了这一点;谢谢你的回复。但我使用的属性是@property(强,非原子)NSMutableArray*arrayFromAFNetworking。另一个问题可能是什么?那么唯一的解释是您意外地为属性分配了一个不可变的NSArray
。检查分配给作业的所有位置从AFNetworking查看。要查找所有位置,我需要临时将属性设置为只读
。然后编译器会将您指向分配新数组的所有位置。我正在为AFNetworking self.jobsArrayFromAFNetworking=[responseobject objectForKey:@“all”]中的responseobject分配此数组;它有什么问题吗?是的,这通常只是一个不可变(普通)NSArray
。您必须分配一个可变副本:self.jobsArrayFromAFNetworking=[[responseObject objectForKey:@“all”]mutableCopy]代码>