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类在头文件中定义。无论我将其声明为(NSArrayNSMutableArrayNSDictionaryNSMutableDictionary),在运行代码时都会出现相同的错误(它编译得很好),即:

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)。

NSString您链接到的文档在named上指定了一个实例方法- (id)mutableObjectFromJSONString;,这将为您提供一个可变字典对象,如果您愿意,您可以使用该对象。

于 2011-08-03T23:25:46.673 回答