Mutating方法发送到不可变对象

wst*_*str 3 parsing json class-method ios

我正在使用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++;
}
Run Code Online (Sandbox Code Playgroud)

此代码放在一个方法中,该方法在请求成功完成并在[request responseString](JSON)中返回响应时被调用.该decodedData对象的类是在头文件中定义.不管是什么,我宣布它作为(或者NSArray,NSMutableArray,NSDictionary,或NSMutableDictionary)我得到的代码时运行(它编译就好了),这是相同的错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '*** -[JKDictionary setObject:forKey:]: mutating method sent to immutable object'
Run Code Online (Sandbox Code Playgroud)

任何人都能告诉我这个类是什么类,以及我应该怎么做才能将Base64解码后的图像添加到对象中?

我对Objective-C很新,所以请耐心等待.谢谢.

Sed*_*ien 9

你试图改变不可变的JKDictionary(它本身就是一个不可变NSDictionary对象的代理).

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