一些jSON來自我的應用分解的本地文件:{"1":{"name":"My List","list":[]}}
。深度可變的seralizing iOS字典/數組
我用這個的iOS 5.1代碼整個事情轉化成什麼,我認爲是一個深可變的字典裏,由於使用的選項:
NSData *data = [[NSFileManager defaultManager] contentsAtPath:jSONFile];
NSMutableDictionary *mydict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error];
鑑於選項NSJSONReadingMutableContainers
我會假設子數組list
將歸入此類別:「NSJSONReadingMutableContainers - 指定將數組和字典創建爲可變對象。」從NSJSONSerialization Class Reference,但是當我嘗試執行以下代碼:
NSMutableArray *myarray = [mydict objectForKey:@"1"] objectForKey:@"list"];
[myarray addObject:@"test"];
在第二行上(ADDOBJECT)有以下例外執行爆炸:
- [__ NSArrayI ADDOBJECT:]:無法識別的選擇發送到例如0x887e840
**終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是: ' - [__ NSArrayI ADDOBJECT:]:無法識別的選擇發送到實例0x887e840'
從我的研究SO (1,2,3),似乎上述錯誤通常是由於嘗試將對象添加到的元素(字典/數組)爲而非可變。此外,從我的SO研究(1,2)看來,似乎沒有辦法測試一個對象是否確實可以在obj-c中進行修改,並且這是通過設計。
所以我想我的問題是,我怎樣才能確保我的jSON結構確實是'深'可變的(或之後)序列化?我知道我不能在mydict
上使用mutableCopy
,因爲這個功能很淺。任何方向/解決方案將不勝感激。謝謝。
非常好。由於我的字典包含包含數組的字典,因此我必須修改一下。 – 2012-04-28 18:31:27
@AuthmanApatira你可以發佈你的代碼,在字典中的字典工作嗎?謝謝! – 2013-10-14 15:42:43