簡體   English   中英

Mutating方法發送到不可變對象

[英]Mutating method sent to immutable object

我正在使用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)中返回[request responseString] decodedData對象的類在頭文件中定義。 無論我將其聲明為什么( NSArrayNSMutableArrayNSDictionaryNSMutableDictionary ),我在運行代碼時會得到相同的錯誤(編譯得很好),這是:

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

任何人都可以告訴我這個類是什么類,以及我應該怎么做才能將Base64解碼后的圖像添加到對象中?

我對Objective-C很新,所以請耐心等待。 謝謝。

你試圖改變不可變的JKDictionary (它本身就是一個不可變的NSDictionary對象的代理)。

您鏈接的文檔指定NSString上的實例方法,名為- (id)mutableObjectFromJSONString; ,這將為您提供一個可變的字典對象,如果您願意,可以使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM