Как мне получить доступ к данным JSON в NSMutableArray?

Я пытаюсь получить доступ к данным JSON, которые я взял с веб-сайта и сохранил в массиве. Однако сначала я хочу отфильтровать все, кроме информации "заголовка", которую я делаю, используя valueForKey: метод. Чтобы проверить это, я записываю их в журнал, используя NSLog метод, однако, когда я запускаю это, я получаю "ноль".

Кто-нибудь может мне посоветовать, почему я получаю то, что получаю?

Спасибо за вашу помощь, высоко ценится.

{
    NSURL *redditURL = [NSURL URLWithString:@"http://pastebin.com/raw.php?i=FHJVZ4b7"];
    NSError *error = nil;
    NSString *jsonString = [NSString stringWithContentsOfURL:redditURL encoding:NSASCIIStringEncoding error:&error];
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
    NSMutableArray *titles = [json valueForKey:@"title"];
    NSLog(@"%@", json);

}

1 ответ

Глядя на объект JSON, возвращенный в этот каталог, вы получаете следующее:

    {
        "kind":"Listing",
        "data":{
        "modhash":"",
        "children":[ ... ],
        "after":"t3_1qwcm7",
        "before":null
        }
    }

Это не массив, это объект JSON. Чтобы получить заголовки дочерних элементов, вы должны сделать следующее:

    NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
    NSMutableArray *children = [[json objectForKey:@"data"] objectForKey:@"children"];
    NSMutableArray *titles = [children valueForKeyPath:@"data.title"];

Это потому, что массив детей вложен в "data" объект и каждый отдельный дочерний объект вложен в другой "data" объект.

Вам тогда также нужно позвонить valueForKeyPath: вместо valueForKey: потому что данные вложены в другой объект

Другие вопросы по тегам