For all newcomers who are lost: consider an example function that will help you understand the entire cycle of extraction, parsing, display, etc., and bring the video with youtube channels directly to your tablet. im not writing a table here.
-(void)initiateRequestToYoutubeApiAndGetChannelInfo { NSString * urlYouCanUseAsSample = @"https://www.googleapis.com/youtube/v3/search?key={YOUR_API_KEY_WITHOUT_CURLY_BRACES}&channelId={CHANNEL_ID_YOU_CAN_GET_FROM_ADDRESS_BAR_WITHOUT_CURLY_BRACES}&part=snippet,id&order=date&maxResults=20"; NSURL *url = [[NSURL alloc] initWithString: urlYouCanUseAsSample]; // Create your request NSURLRequest *request = [NSURLRequest requestWithURL:url]; // Send the request asynchronously remember to reload tableview on global thread [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { // Callback, parse the data and check for errors if (data && !connectionError) { NSError *jsonError; NSDictionary *jsonResult = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError]; if (!jsonError) { // better put a breakpoint here to see what is the result and how it is brought to you. Channel id name etc info should be there NSLog(@"%@",jsonResult); /// separating "items" dictionary and making array // id keyValuePairDict = jsonResult; NSMutableArray * itemList = keyValuePairDict[@"items"]; for (int i = 0; i< itemList.count; i++) { /// separating VIDEO ID dictionary from items dictionary and string video id id v_id0 = itemList[i]; NSDictionary * vid_id = v_id0[@"id"]; id v_id = vid_id; NSString * video_ID = v_id[@"videoId"]; //you can fill your local array for video ids at this point // [video_IDS addObject:video_ID]; /// separating snippet dictionary from itemlist array id snippet = itemList[i]; NSDictionary * snip = snippet[@"snippet"]; /// separating TITLE and DESCRIPTION from snippet dictionary id title = snip; NSString * title_For_Video = title[@"title"]; NSString * desc_For_Video = title[@"description"]; //you can fill your local array for titles & desc at this point // [video_titles addObject:title_For_Video]; // [video_description addObject:desc_For_Video]; /// separating thumbnail dictionary from snippet dictionary id tnail = snip; NSDictionary * thumbnail_ = tnail[@"thumbnails"]; /// separating highresolution url dictionary from thumbnail dictionary id highRes = thumbnail_; NSDictionary * high_res = highRes[@"high"]; /// separating HIGH RES THUMBNAIL IMG URL from high res dictionary id url_for_tnail = high_res; NSString * thumbnail_url = url_for_tnail[@"url"]; //you can fill your local array for titles & desc at this point [video_thumbnail_url addObject:thumbnail_url]; } // reload your tableview on main thread //[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]; performSelectorOnMainThread:@selector(reloadInputViews) withObject:nil waitUntilDone:NO]; // you can log all local arrays for convenience // NSLog(@"%@",video_IDS); // NSLog(@"%@",video_titles); // NSLog(@"%@",video_description); // NSLog(@"%@",video_thumbnail_url); } else { NSLog(@"an error occurred"); } } }]; }
source share