访问媒体:GData的Obj-C库返回的用于访问YouTube播放列表的XML组

时间:2012-01-06 17:37:40

标签: objective-c ios youtube-api gdata-api

我已经看到了几个类似的问题,但是没有一个能正常工作。 (我猜Google从那些问题开始更新了GData Objective-C库)

两个类似的问题是:

Load YouTube GData feed for a single video by id

gdata youtube query problem

@grobbins在第一个链接中解释的方式如下:

for (GDataEntryYouTubeVideo *videoEntry in [feed entries]) {
  GDataYouTubeMediaGroup *mediaGroup = [videoEntry mediaGroup];
  NSString *videoID = [mediaGroup videoID];

  NSArray *mediaContents = [mediaGroup mediaContents];
  GDataMediaContent *flashContent =
    [GDataUtilities firstObjectFromArray:mediaContents
                           withValue:@"application/x-shockwave-flash"
                          forKeyPath:@"type"];

  NSLog(@"video ID = %@, flash content URL = %@",
    videoID, [flashContent URLString]);   
}

问题是调用'mediaGroup'会将'无法识别的选择器发送到实例...'

我试过将videoEntry设置为GDataEntryBase和GDataEntryYouTubeVideo(它是GDataEntryBase的子类),无论调试器显示变量videoEntry总是GDataEntryBase类型(即使指定GDataEntryYouTubeVideo,如上所述)

我可以抓住XML并自己解析,但那么使用库的意义何在? (另外在Googles网站上,它表示你永远不需要直接解析XML)

我做错了什么?

如何获取返回的播放列表的mediaGroup部分?

FetchFeedWithURL:完成后加载我的方法,我的方法有一个标题:

- (void)loadedPlaylist:(GDataServiceTicket*)ticket finishedWithFeed:(GDataFeedBase*)feed error:(NSError*)error;

1 个答案:

答案 0 :(得分:0)

发现了问题!

问题是我忘了将-ObjC -all_load添加到我的其他链接器标志中。 添加完成后,Feed条目将以GDataEntryYouTubePlaylist类型返回。

希望这有助于其他人。