【发布时间】:2011-08-11 18:54:00
【问题描述】:
这是我得到的 JSON 输出:
{
"success":true,
"return":{
"an":[
{
"ordner_id":1,
"name":"Eingang",
"gesamt":"1415",
"ungelesen":"0"
},
{
"ordner_id":3,
"name":"Gel\u00f6scht"
},
{
"ordner_id":"42864",
"name":"Test1",
"gesamt":"0",
"ungelesen":"0"
}
],
"von":[
{
"ordner_id":2,
"name":"Gesendet"
},
{
"ordner_id":3,
"name":"Gel\u00f6scht"
}
]
}
}
我可以通过以下几行轻松获得“成功”和“返回”值(BOOL 和 NSDictonary):
NSDictionary *ensFolderListFirstReturn = [ENSHandler GetENSFolderList];
BOOL success = [[ensFolderListFirstReturn objectForKey:@"success"] boolValue];
if (success)
{
ensFolderList = [ensFolderListFirstReturn objectForKey:@"return"];
}
但是当我尝试用这个获得“an”值时:
NSDictionary *ensFolderList1 = [ensFolderList objectForKey:@"an"];
我遇到了一个 BAD EXEC 错误。
我做错了什么?
【问题讨论】:
-
请记住,您不拥有
ensFolderList = [ensFolderListFirstReturn objectForKey:@"return"];返回的对象,并且取决于您尝试执行[ensFolderList objectForKey:@"an"]的何时,ensFolderList指向的对象可能已经被释放,你现在是一个悬空指针的骄傲拥有者。此外,与键an关联的对象是一个数组,而不是字典。