簡體   English   中英

例外:“發送給不可變對象的變異方法”實際上是可變數組

[英]exception: “mutating method sent to immutable object” which is actually a mutable array

我試圖將值更改為可變數組的特定鍵:

NSMutableArray* reversed = [NSMutableArray arrayWithArray:regions];

[reversed setValue:@"current" forKey:@"region"];

但這導致了一個未捕獲的異常:

*由於未捕獲的異常'NSInternalInconsistencyException'而終止應用程序,原因:'-[__ NSCFDictionary setObject:forKey:]:將變異方法發送給不可變對象'*首先拋出調用棧:

為什么告訴我我的NSMutableArray是不可變的對象?

setValue:forKey:記錄為可以執行以下操作

 setValue:forKey: 

使用指定的值和鍵在數組的每個項目上調用setValue:forKey:。

強調我的。 您的NSMutableArray是可變的,但是其中包含的項之一是可變的。

您是否在該錯誤消息中看到對NSMutableArray任何提及? 不。它提到了__NSCFDictionary ,它是NSDictionary運行時類。

您對setValue:forKey:調用將轉發到此數組中的所有對象。 這些對象中至少有一個是不可變的NSDictionary ,它將引發此異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM