3

JSONKitを使用して、iPhoneアプリケーションのサーバーから返されたJSON文字列を解析しています。サーバーの応答の一部は、実際の画像にデコードしてパーサーが作成するオブジェクトに追加したい、Base64でエンコードされた画像のカップルです。問題は、パーサーが返すクラスの種類、つまりオブジェクトとの対話に使用できるメソッドの種類がわからないように見えることです。質問に対する回答をJSONKitのドキュメントで検索しましたが、見つかりませんでした。

decodedData = [[request responseString] objectFromJSONString];

int i = 0;
[Base64 initialize];
for (NSString *base64String in [decodedData valueForKey:@"base64String"]) {
    UIImage *image = [UIImage imageWithData:[Base64 decode:base64String]];
    [decodedData setValue:image forKey:@"image"];
    i++;
}

このコードは、リクエストが正常に終了し、レスポンスが[request responseString](JSON)で返されるときに呼び出されるメソッドに配置されます。オブジェクトのdecodedDataクラスはヘッダーファイルで定義されています。私がそれを何として宣言しても(、、、、または)NSArray、コードを実行すると同じエラーが発生します(正常にコンパイルされます)。NSMutableArrayNSDictionaryNSMutableDictionary

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '*** -[JKDictionary setObject:forKey:]: mutating method sent to immutable object'

オブジェクトがどのようなクラスであるか、Base64でデコードされた画像をオブジェクトに追加するにはどうすればよいか教えてもらえますか?

私はObjective-Cにかなり慣れていないので、我慢してください。ありがとう。

4

1 に答える 1

9

不変(それ自体が不変オブジェクトJKDictionaryのプロキシ)を変更しようとしています。NSDictionary

リンク先のドキュメントでは、NSStringnamedのインスタンスメソッドを指定して- (id)mutableObjectFromJSONString;います。これにより、必要に応じて操作できる可変ディクショナリオブジェクトが提供されます。

于 2011-08-03T23:25:46.673 に答える