2015-11-02 106 views
1

查询TMDb时,我很难管理任何超出JSON响应的东西。尽管周末大部分时间都在搜索这些论坛和其他论坛,但我并不接近解决方案。从NSDictionary中检索密钥

在我的头文件我有:

@property (nonatomic,strong) NSDictionary * fetchedData; 

字典是正确的填充,由于JSON响应的第一部分看起来是这样的,当我使用:

NSLog(@"fetchedData: %@", fetchedData); 


fetchedData: { 
    page = 1; 
    results = (
    { 
     adult = 0; 
     id = 1245; 
     "known_for" = (
     { 
      adult = 0; 
      "backdroppath" = "/hbn46fQaRmlpBuUrEiFqv0GDL6Y.jpg"; 
      "genreids" = (878, 28, 12); 
      id = 24428; 
      "mediatype" = movie; 
      "original_language" = en; 
      "original_title" = "The Avengers"; 

我一直尝试多种方式来检索响应中的所有“original_title”(或任何键)实例,但当每次尝试返回NULL时,我都没有留下任何提示,因此欢迎任何建议!

+0

显示你的尝试之一的代码。你如何处理数组? – Wain

+0

您没有得到有效的JSON格式。首先验证你的JSON字符串。 –

+0

'NSLog(@“%@”,[yourDict allKeys]);'返回所有关键数组。 –

回答

3

试试这个。

NSString *title = fetchedData[@"results"][0][@"known_for"][0][@"original_title"]; 
+0

谢谢,这工作正如我所希望的那样。我遇到的问题是两个答案都出现了正确的结果 - 我可以将两个答案都标记为答案吗? – Lee

+0

其实我是第一个,但对我来说不是很重要。我刚刚帮了忙。 – kirander

1

从响应

获取数据,我认为fetchedData是dictionary.So

NSString *strOriginalTitle = [NSString stringWithFormat:@"%@",[[[[[fetchedData valueForKey:@"results"]objectAtIndex:0]valueForKey:@"known_for"]objectAtIndex:0]valueForKey:@"original_title"]; 

     //OR By getting data step by step 

NSArray *arrayResults = [fetchedData valueForKey:@"results"]; 
NSDictionary *dict = [[arrayResults objectAtIndex:0] copy]; 
NSArray *arrayKnownFor = [dict [email protected]"known_for"] copy]; 
NSString *strOriginalTitle = [arrayKnownFor objectAtIndex:0]valueForKey:@"original_title"]; 
NSLog(@"The original_title is - %@",strOriginalTitle); 
+0

谢谢,这工作正如我所希望的那样。我遇到的问题是两个答案都出现了正确的结果 - 我可以将两个答案都标记为答案吗? – Lee

+0

我的答案是在一步一步的过程以及一行过程中向您展示。请在我的答案中打勾并投票给我的答案。谢谢。 – user3182143

+0

请打勾并投票我的答案,因为我非常整齐,可以理解地解释你。 – user3182143