Objective c 按索引阅读词典

Objective c 按索引阅读词典,objective-c,nsdictionary,Objective C,Nsdictionary,我有一个RESTAPI,它在解析JSON后返回NSDictionary中调用的内容 它被记录为: 2013-04-07 23:43:25.008 MyApp[15133:c07] ( { id = 1; name = "The best of NTNU"; type = 1; }, { id = 2; name = "Forever alone"; type =

我有一个RESTAPI,它在解析JSON后返回NSDictionary中调用的内容

它被记录为:

2013-04-07 23:43:25.008 MyApp[15133:c07] (
        {
        id = 1;
        name = "The best of NTNU";
        type = 1;
    },
        {
        id = 2;
        name = "Forever alone";
        type = 1;
    }
)
我想把第一级的dict作为我可以使用的NSDict。问题是,无论我如何尝试抓住这个(
valueForKey
objectForKey
)应用程序都会崩溃


根据memory inspector的说法,是这个NSDict[0]和[1]的“子项”,但我不知道如何找到它们。

JSON实际上返回的是一个NSDictionary数组,而不是一个NSDictionary

要获取第一级,需要获取数组的第一个索引:

NSArray *json = [NSJSONSerialization ....
NSDictionary *firstLevel = json[0]; // or [json objectAtIndex:0];

JSON实际上返回的是NSDictionary的NSArray,而不是单个NSDictionary

要获取第一级,需要获取数组的第一个索引:

NSArray *json = [NSJSONSerialization ....
NSDictionary *firstLevel = json[0]; // or [json objectAtIndex:0];

这看起来像一个
NSArray
(因为没有键…),所以您可以使用
objectAtIndex:
选择器访问第一个字典

NSDictionary * dict0 = [array objectAtIndex:0]

这看起来像一个
NSArray
(因为没有键…),所以您可以使用
objectAtIndex:
选择器访问第一个字典

NSDictionary * dict0 = [array objectAtIndex:0]

这实际上是一个
NSDictionary的
NSArray

这实际上是一个
NSDictionary的
NSArray

啊,是的,你是对的。这是因为我删除了json较低级别中的所有键和值,所以留下了一个NSArray,但将其定义为NSDict。根据NSJSONSerialization的文档,它应该返回一个NSDict,这取决于JSON的结构。一般来说,它会返回一本词典。啊,是的,你说得对。这是因为我删除了json较低级别中的所有键和值,所以留下了一个NSArray,但将其定义为NSDict。根据NSJSONSerialization的文档,它应该返回一个NSDict,这取决于JSON的结构。通常,它会返回一个NSDictionary。