API GData для видео YouTube

Я пытаюсь заставить YouTube работать в моем приложении для iOS. Я успешно получаю список видео для конкретного пользователя, но я изо всех сил пытаюсь реализовать didSelectRowAtIndexPath, чтобы выбранное видео было вставлено в отдельный viewController. Вот код, с которым у меня возникли проблемы:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DetailViewController *detailController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailController"];

    GDataEntryBase *entry2 = [[feed entries] objectAtIndex:indexPath.row];
    videoArray = [[(GDataEntryYouTubeVideo *)entry2 mediaGroup] mediaContents];
    NSString *tempUrl = [videoArray objectAtIndex:0];
    NSLog(@"The URL is:%@",tempUrl);
    detailController.videoString = tempUrl;

    [self.navigationController pushViewController:detailController animated:YES];

}

Каждый раз, когда я запускаю это, я получаю точку останова в 'detailController.videoString = tempUrl;'

Я вижу, что строка tempUrl заполняется следующим через NSLog:

The URL is:GDataMediaContent 0x69c76a0: {url:https://www.youtube.com/v/s36krFdPmYQ?version=3&f=user_uploads&app=youtube_gdata type:application/x-shockwave-flash medium:video isDefault:true expression:full duration:1913}

Как я могу извлечь только URL-адрес видео из GData API?

Заранее спасибо за ваши ответы.

Я внес следующие изменения, и теперь я получаю правильную строку URL:

GDataEntryBase *entry2 = [[feed entries] objectAtIndex:indexPath.row];
    NSArray *mediaContents = [[(GDataEntryYouTubeVideo *)entry2 mediaGroup] mediaContents];
    GDataMediaContent *flashContent = [GDataUtilities firstObjectFromArray:mediaContents withValue:@"application/x-shockwave-flash" forKeyPath:@"type"];
    NSLog(@"The URL is:%@",[flashContent URLString]);
    detailController.videoString = [flashContent URLString];

Что дает мне следующее из NSLog:

The URL is:https://www.youtube.com/v/s36krFdPmYQ?version=3&f=user_uploads&app=youtube_gdata

Однако я все еще получаю точку останова в 'detailController.videoString = [flashContent URLString];


person SchoolTechie    schedule 25.04.2012    source источник


Ответы (1)


Я смог решить это. Я добавил модальный переход между двумя ViewController, а также немного изменил свой код. Вот код, который я использовал после добавления перехода:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    DetailViewController *detailController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailController"];
    GDataEntryBase *entry2 = [[feed entries] objectAtIndex:indexPath.row];
    NSString *title = [[entry2 title] stringValue];
    NSArray *contents = [[(GDataEntryYouTubeVideo *)entry2 mediaGroup] mediaContents];
    GDataMediaContent *flashContent = [GDataUtilities firstObjectFromArray:contents withValue:@"application/x-shockwave-flash" forKeyPath:@"type"];
    NSString *tempURL = [flashContent URLString];

    detailController.videoString = tempURL;
    detailController.titleString = title;
    [self.navigationController pushViewController:detailController animated:YES];

}

Полный рабочий код приложения YouTubeDemo можно просмотреть здесь: https://gist.github.com/2501684.

person SchoolTechie    schedule 26.04.2012