【问题标题】:Objective C: updating values for key for an NSMutableDictionary?目标 C:更新 NSMutableDictionary 的键值?
【发布时间】:2012-04-09 23:18:40
【问题描述】:

我有一个 NSMutableDictionary,最初设置了键和值。 后来我需要更新某些键的值,我想我只需要这样做 [mutableDict setValue:val forKey:key],但这会引发异常:

[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object

我做错了什么? (我在可变字典的每个键中都有另一个可变字典,但我认为这不是原因)

【问题讨论】:

  • 出于某种原因,您实际上是在使用NSDictionary 而不是NSMutableDictionary。很难说为什么没有更多代码,也许您正在使用通过调用 copy 获得的副本,或者您已经从 plist/userDefaults 加载了字典。我们可以看到更多代码吗?
  • @Paul.s 是的,我确实复制了一个 NSMutableDictionary。那会是为什么吗?如果是,那我还应该用什么来复制?
  • 使用mutableCopy 而不是copy 来获取可变字典
  • @Paul.s 哦.. 不知道。我是 Objective-C 的新手,我试图寻找我做错了什么,但我错过了 :( 谢谢!!

标签: objective-c xcode cocoa osx-lion nsmutabledictionary


【解决方案1】:

我会复制粘贴我的评论,以防你想保持 100% 接受

保罗.s

由于某种原因,您实际上是在使用 NSDictionary 而不是 NSMutableDictionary。很难说为什么没有更多代码,也许您正在使用通过调用 copy 获得的副本,或者您已经从 plist/userDefaults 加载了字典.. 我们可以看到更多代码吗?

丹尼斯

@Paul.s 是的,我确实复制了 NSMutableDictionary。那会是为什么吗?如果是,那我还应该用什么来复制?

保罗.s

使用 mutableCopy 而不是 copy 来获取可变字典

丹尼斯

@Paul.s 哦.. 不知道。我是 Objective-C 的新手,我试图寻找我做错了什么,但我错过了:(谢谢!!

【讨论】:

    猜你喜欢
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多