Ios 从NSDictionary获取值不起作用

Ios 从NSDictionary获取值不起作用,ios,objective-c,nsdictionary,Ios,Objective C,Nsdictionary,1.我从web服务获取JSON数据,并将其添加到NSDictionary中 NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error]; 2.然后我在NSLog中显示“dic”,它存在 {"query": [{"IndexNo": 1,"ID": "01","Picture": "img/food-48.png"}]}

1.我从web服务获取JSON数据,并将其添加到NSDictionary中

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
2.然后我在NSLog中显示“dic”,它存在

{"query": [{"IndexNo": 1,"ID": "01","Picture": "img/food-48.png"}]}
({ID = 01;IndexNo = 1;Picture = "img/food-48.png";})
3.然后我从新的NSDictionary“dt”中的“dic”中获取数据值

4.然后我在NSLog中显示“dt”,它是存在的

{"query": [{"IndexNo": 1,"ID": "01","Picture": "img/food-48.png"}]}
({ID = 01;IndexNo = 1;Picture = "img/food-48.png";})
5.我想从“dt”中获取“ID”。我使用这个代码

NSString *ID = [dt objectForKey: @"ID"];
但这是错误的

-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x8a40a60
你能试试这个吗

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
NSArray *arr = [dic objectForKey: @"query"];
NSDictionary *dt = arr[0];
NSString *ID = [dt objectForKey: @"ID"];
[dic objectForKey:@“query”]
实际返回NSArray。请注意第一条NSLog语句输出中的这些方括号:

{"query": [...]}
试试这个:

NSArray *dtArray = [dic objectForKey: @"query"];
NSDictionary *dt = dtArray[0];
NSString *ID = [dt objectForKey:@"ID"];
或使用NSDictionary的键值编码行为和:


您正在尝试从数组中获取键的值。更改这些行。

从jsonStructure

{"query": [{"IndexNo": 1,"ID": "01","Picture": "img/food-48.png"}]}
键“query”的对象是数组,因为{}是字典,[]是数组。下面的步骤也是如此

    NSArray *tempArray = [dt objectForKey:@"query"];

    NSDictionary *tempDictionary = [tempArray objectAtIndex:0];
    NSString *ID = [tempDictionary objectForKey:@"ID"];

希望这有帮助。

ID的值是NSString对象吗?
    NSArray *tempArray = [dt objectForKey:@"query"];

    NSDictionary *tempDictionary = [tempArray objectAtIndex:0];
    NSString *ID = [tempDictionary objectForKey:@"ID"];