2016-12-07 65 views
0

我正在做以下代碼,以便從我的一端向字典添加數據後,將字典從一個viewcontroller發送到另一個。NSInternalInconsistencyException',原因:' - [__ NSCFDictionary setObject:forKey:]:發送到不可變對象的變異方法

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意思以及如何修復?

+0

行'selectedDic = [[NSMutableDictionary alloc] init];'是完全沒有必要的。 – clemens

+0

dataArray必須包含NSDictionary,並且您正試圖在NSDictionary中設置對象,這就是崩潰的原因。在您的dataArray中添加NSMutableDictionary類型對象,它會起作用。 –

回答

0

此錯誤意味着您正在嘗試更改不可變的字典。你將selectedDic初始化爲一個N​​SMutableDictionary,這很好,但是你將它重新分配爲[dataArray objectAtIndex:index.row]。您沒有發佈足夠的信息以便我能夠確定dataArray中的內容,但假設dataArray是NSDictionaries的數組,您可以通過將該行更改爲[[dataArray objectAtIndex:index.row] mutableCopy]來完成此工作。如果dataArray不是一個字典數組,那麼你可能需要重新思考你想要做什麼。

相關問題