在我的項目中,我必須加載一些json文件。我分析他們JSONKit與將對象添加到由JSONKit創建的字典中?
NSMutableDictionary *json = [myJSON objectFromJSONString];
每一個分析後,我將它們添加到一個數組,如:
[self.themeArray addObject:json];
能正常工作至今。現在我需要通過視圖之間的字典。工作到目前爲止,但我需要添加更多的對象到字典對象 - > JSON。即使它,我宣佈json作爲NSMutableDictionary,它不允許我添加對象,因爲它似乎JSONKit分析器創建非可變字典。
我在想創建一個包含json字典和我的附加數據的對象,所以我不必更改json字典。我甚至可以將它改爲NSDictionary,因爲不需要改變它。但是這對我來說似乎並不高雅。
您是否知道如何在不更改JSONKit庫的情況下解決此問題?
在此先感謝!
編輯
我只是改變了我的代碼
NSMutableDictionary *json = [[myJSON objectFromJSONString] mutableCopy];
像這樣
[[self.theme objectForKey:@"theme"] setObject:sender forKey:@"sender"];
[[self.theme objectForKey:@"theme"] setValue:sender forKey:@"sender"];
的Xcode後試圖拋出一個異常:
*終止應用程序由於Ť o未捕獲異常'NSInternalInconsistencyException',原因:'* - [JKDictionary setObject:forKey:]:發送給不可變對象的變異方法'
我認爲這是由於上級字典中仍存在嵌套字典。然後,我將不得不通過我的json對象來將所有字典複製到可變字典中,對嗎?
也許最好切換到Guillaume建議的NSJSONSerialization。
編輯
我只是想這樣的事情
[self.theme setValue:sender forKey:@"sender"];
和它的作品吧!這是我所承擔的。只有json對象被複制到一個可變對象。對你來說可能很明顯,這不是我。
謝謝大家的幫助!
編輯
最後我改變了我的代碼後,我又不能設法改變內心深處,我的字典數據對可變對象的所有對象。我拋出了JSONKit,現在使用NSJSONDeserialization作爲推薦,這裏帶有選項NSJSONReadingMutableContainers。我的代碼現在看起來像這樣,所有的容器(數組和字典)也可以在內部進行深入修改。這讓我高興! ;-)
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:myJSON options:NSJSONReadingMutableContainers error:&jsonParsingError];
這也不是辦法,因爲要使用JSONKit,但如果你使用蘋果的NSJSONSerialization代替(iOS 5以上),有一個選項來獲得可變對象。否則,'mutableCopy'是要走的路。 – Guillaume