我有一个 NSMutableDictionary,最初设置了键和值。后来我需要更新某些键的值,我想我只需要做 [mutableDict setValue:val forKey:key],但这会抛出一个异常说:
[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object
我究竟做错了什么?(我在可变字典的每个键中都有另一个可变字典,但我认为这不是原因)
我有一个 NSMutableDictionary,最初设置了键和值。后来我需要更新某些键的值,我想我只需要做 [mutableDict setValue:val forKey:key],但这会抛出一个异常说:
[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object
我究竟做错了什么?(我在可变字典的每个键中都有另一个可变字典,但我认为这不是原因)
我会复制粘贴我的评论,以防你想保持 100% 接受
保罗斯
出于某种原因,您实际上使用的是 NSDictionary 而不是 NSMutableDictionary。很难说为什么没有更多代码,也许您正在使用通过调用 copy 获得的副本,或者您已经从 plist/userDefaults 加载了字典。我们可以看到更多代码吗?
丹尼斯
@Paul.s 是的,我确实复制了 NSMutableDictionary。那会是为什么吗?如果是,那我还应该用什么来复制?
保罗斯
使用 mutableCopy 而不是 copy 来获取可变字典
丹尼斯
@Paul.s 哦.. 不知道。我是Objective-C的新手,我试图寻找我做错了什么,但我错过了:(谢谢!!