2015-11-02 3 views
1

Мне сложно справляться с чем-либо из ответа JSON при запросе TMDb. Несмотря на то, что большую часть выходных дней вы искали в этих форумах и других, я не ближе к решению.Извлечение ключей из 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

Смежные вопросы