NSInternalInconsistencyException',原因:'-[__NSCFDictionary setObject:forKey:]:发送到不可变对象的变异方法
NSInternalInconsistencyException', reason: '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object
我正在执行以下代码,在从我这端向字典添加数据后,将字典从一个 viewcontroller 发送到另一个。
else if ([segue.identifier isEqualToString:@"detail"]) {
NSString *identifier=segue.identifier;
NSIndexPath *index = [self.listTableView indexPathForSelectedRow];
DetailViewController *detailViewController = [segue destinationViewController];
NSMutableDictionary *selectedDic;
selectedDic=[[NSMutableDictionary alloc]init];
selectedDic= [dataArray objectAtIndex:index.row];
[selectedDic setObject:@"abc" forKey:@"UserID"];
detailViewController.tripDetails =[selectedDic mutableCopy];
detailViewController.identifier = identifier;
}
但它显示了上面的内容 exception.What 是什么意思以及如何修复它?
此错误意味着您正在尝试更改不可变的字典。您将 selectedDic 初始化为 NSMutableDictionary,这很好,但随后您将其重新分配为 [dataArray objectAtIndex:index.row]。您没有 post 足够的信息让我能够确定 dataArray 中的内容,但假设 dataArray 是一个 NSDictionaries 数组,您可以通过将该行更改为 [[dataArray objectAtIndex:index .row] mutableCopy]。如果该 dataArray 不是字典数组,那么您可能需要重新考虑您正在尝试做什么。
我正在执行以下代码,在从我这端向字典添加数据后,将字典从一个 viewcontroller 发送到另一个。
else if ([segue.identifier isEqualToString:@"detail"]) {
NSString *identifier=segue.identifier;
NSIndexPath *index = [self.listTableView indexPathForSelectedRow];
DetailViewController *detailViewController = [segue destinationViewController];
NSMutableDictionary *selectedDic;
selectedDic=[[NSMutableDictionary alloc]init];
selectedDic= [dataArray objectAtIndex:index.row];
[selectedDic setObject:@"abc" forKey:@"UserID"];
detailViewController.tripDetails =[selectedDic mutableCopy];
detailViewController.identifier = identifier;
}
但它显示了上面的内容 exception.What 是什么意思以及如何修复它?
此错误意味着您正在尝试更改不可变的字典。您将 selectedDic 初始化为 NSMutableDictionary,这很好,但随后您将其重新分配为 [dataArray objectAtIndex:index.row]。您没有 post 足够的信息让我能够确定 dataArray 中的内容,但假设 dataArray 是一个 NSDictionaries 数组,您可以通过将该行更改为 [[dataArray objectAtIndex:index .row] mutableCopy]。如果该 dataArray 不是字典数组,那么您可能需要重新考虑您正在尝试做什么。