1

最初にキーと値が設定された NSMutableDictionary があります。後で特定のキーの値を更新する必要があり、[mutableDict setValue:val forKey:key] を実行するだけでよいと思っていましたが、次のような例外がスローされます。

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

私は何を間違っていますか?(可変辞書の各キー内に別の可変辞書がありますが、それが理由だとは思いません)

4

1 に答える 1

2

100% 受け入れたままにしておきたい場合に備えて、コメントをコピーして貼り付けます。

ポールさん

何らかの理由で、実際には NSMutableDictionary ではなく NSDictionary を使用しています。より多くのコードがない理由を言うのは難しいです。おそらく、copy を呼び出して取得したコピーを使用しているか、plist/userDefaults からディクショナリをロードしています。

デニス

@Paul.s はい、NSMutableDictionary をコピーしました。それが理由だろうか?もしそうなら、他に何を使ってコピーすればよいですか?

ポールさん

変更可能な辞書を取得するには、コピーの代わりに mutableCopy を使用します

デニス

@Paul.sああ..それについて知りませんでした。私はObjective-Cが初めてで、間違っていることを検索しようとしましたが、見逃しました:(ありがとう!!

于 2012-04-09T23:35:37.650 に答える