Анализ простого JSON с помощью AFNetworking хорошо документирован и кажется очень простым. То, что я пытаюсь сделать, это проанализировать JSON из Instagram, который находится на многих уровнях в массиве, где я могу извлекать изображения и вставлять их в CollectionView. Прямо сейчас я застрял. Мой простой код возвращает все в одном текстовом блоке, а совсем не то, что мне нужно. То, что я пытаюсь захватить, обведено красным. Если я возьму 10 изображений, я действительно хочу, чтобы все они были в массиве. В этот момент я могу получить фактические изображения и отобразить их. Прямо сейчас я застрял.
Найдите все изображения с тегом Snow: https://api.instagram.com/v1/tags/snow/media/recent?access_token=836379.f59def8.fd07b9ba8ea440188dc56d2763bbf6c2
Код, который просто возвращает строку имен изображений, что мне совсем не нужно.
-(void)viewDidLoad {
NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__);
[super viewDidLoad];
NSString *path = @"https://api.instagram.com/v1/tags/snow/media/recent?access_token=836379.f59def8.fd07b9ba8ea440188dc56d2763bbf6c2";
NSLog(@"path %@", path);
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:path]];
AFJSONRequestOperation *operation =
[AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSString *image = [[[[JSON valueForKey:@"data"]valueForKey:@"images"]valueForKey:@"low_resolution"]valueForKey:@"url"];
NSLog(@"%@", image);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON){
// NSLog(@"There was a problem: %@", [error localizedDescription]);
}];
[operation start];
//NSDictionary *dict = [imagesArry objectAtIndex:0];
}
Вот что я получаю:
Просто кажется, что я не подхожу к этому правильно, неужели все так просто? Одна строка захватывает все ссылки на мои изображения в Instagram? Хмммм, похоже, что они разделены ",". Может ли это быть так просто?
NSString *image = [[[[JSON valueForKey:@"data"]valueForKey:@"images"]valueForKey:@"low_resolution"]valueForKey:@"url"];
ОБНОВИТЬ:
Хорошо, почти. Это немного странно, кажется очень прямолинейным, пытаясь разбить массив на "," но я уверен, что работаю над строкой:
NSArray *listItems = [компоненты изображенияSeparatedByString:@","];
ОШИБКА: Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «-[__NSArrayI componentsSeparatedByString:]: нераспознанный селектор отправлен экземпляру 0x8b84710»
Спасибо Hot Licks. То, что я говорю, что это NSTRING, означает пшик. Я действительно возвращаю массив.
NSLog(@"Class name is %s", object_getClassName(image));
говорит вам, что у вас есть массив, а не строка. - person Hot Licks   schedule 29.10.2013