Как мне получить доступ к данным 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:
потому что данные вложены в другой объект