在我的应用程序中,我以json格式从服务器捕获响应,如下所示:
{"hotels":
{"data":
[{"id":"id1",
"country":"counry1",
"state":"state1",
"city":"city1",
}
{"id":"id2",
"country":"counry2",
"state":"state2",
"city":"city2",
}]
}
}
如果我尝试通过此代码访问元素
ID = [[[ParsedResponse objectForKey:@"hotels"] objectForKey:@"data"] valueForKey:@"id"];
一切都好。但是如果我做的话
NSMutableDictionary *ItemsFromParsedResponse = [[NSMutableDictionary alloc] init];
ItemsFromParsedResponse = [ParsedResponse valueForKeyPath:@"hotels.data"];
while (ItemsFromParsedResponse = (NSMutableDictionary*)[ParsedResponseEnumerator nextObject]) {
ID = [ItemsFromParsedResponse valueForKey:@"id"];
}
ID为[null]。我不明白,为什么。 谢谢你的任何建议。
答案 0 :(得分:2)
你要么在这里做一些奇怪的事情,要么我们没有你所有的代码。我会写下你失败的代码如下:
itemsFromParsedResponse = [parsedResponse valueForKeyPath:@"hotels.data"];
for (NSDictionary *jsonFragment in itemsFromParsedResponse) {
jsonID = [jsonFragment valueForKey:@"id"];
}
我遵循以小写字符开头的变量名约定(以大写字母开头应该为类名保留),我正在使用快速枚举,请记住{{1}处的信息是hotels.data
。我还将NSArray
重命名为ID
,以避免与jsonID
指针混淆。