1

JSONKit を使用して JSON 文字列を NSDictionary に解析しています。

NSDictionary *deserializedData = [jsonString objectFromJSONString];

私の質問は、辞書の値を変更して、変更された JSON 文字列を取得するにはどうすればよいですか?

辞書の値を変更しようとしました:

[deserializedData setObject:[NSNumber numberWithInt:iRatings] forKey:@"ratings"];   

しかし、アプリはその行でクラッシュします。私は何を間違っていますか?

前もって感謝します!

4

5 に答える 5

5

他の答えは正しいですが、この場合に本当に欲しいのは次のとおりです。

NSMutableDictionary *deserializedData = [jsonString mutableObjectFromJSONString];

このmutableObjectFromJSONStringメソッドは変更可能なディクショナリを直接作成するため、時間とメモリを節約できます。

于 2012-02-16T11:43:56.407 に答える
2

NSDictionaryNSMutableDictionaryは不変の辞書なので、データを変更する必要があります。JSONKit についてはよくわかりませんが、組み込みの Cocoa JSON パーサーには、変更可能なコンテナーでデータを返すためのフラグがあります。

最悪の場合、次のようなことができます。

NSMutableDictionary* data = [NSMutableDictionary dictionaryWithDictionary:[jsonString objectFromJSONString]];
[data setObject:[NSNumber numberWithInt:iRatings] forKey:@"ratings"];
于 2012-02-16T09:37:21.130 に答える
1

不変オブジェクトを変更しようとしています。

NSMutableDictionary *deserializedData = [NSMutableDictionary dictionaryWithDictionary: [jsonString objectFromJSONString]];

これは変更可能なディクショナリであり、値を変更できます。

于 2012-02-16T09:37:23.203 に答える
1

あなたはこのようにしてみてください:

NSMutableDictionary *deserializedData = [NSMutableDictionary dictionaryWithDictionary: [jsonString objectFromJSONString]];

次に、値を変更します。

[deserializedData setObject:[NSNumber numberWithInt:iRatings] forKey:@"ratings"];   

NSDictionary値を追加または変更できないため、アプリケーションがクラッシュしています 。

于 2012-02-16T09:49:25.200 に答える