【发布时间】:2011-03-29 05:21:21
【问题描述】:
我正在尝试将 GData/YouTubeAPI 集成到我的项目中,但我有点卡住了。我使用了这篇文章中给出的代码:
Any examples/tutorials on using Google GData API - Youtube on iphone?
我的问题是,当 GData 服务完成从互联网上抓取数据时,函数 'request:finishedWithFeed:error:' 没有被调用。
我的程序可以编译并运行,并且不会出现运行时错误。我还检查了 feedURL 并返回了一个有效的 URL。我对此进行了调试,“服务”确实设法返回了一个值。
GDataServiceGoogleYouTube *service = [self youTubeService];
// feed id for user uploads
NSString *uploadsID = kGDataYouTubeUserFeedIDUploads;
// construct the feed url
NSURL *feedURL = [GDataServiceGoogleYouTube youTubeURLForUserID:USER_NAME userFeedID:uploadsID];
// make API call
[service fetchFeedWithURL:feedURL delegate:self didFinishSelector:@selector(request:finishedWithFeed:error:)];
这是我试图让服务完成后调用的函数的标头,它与我发布的其他代码位于同一对象中
- (void)request:(GDataServiceTicket *)ticket finishedWithFeed:(GDataFeedBase *)aFeed error:(NSError *)error;
解决方案——
确保它在主线程上运行 --
-(id)initWithVideosArrayURLString:(NSString*)url {
if (self = [super init]) {
NSLog(@"loading");
[self performSelectorOnMainThread:@selector(initMainThreadWithURLString:) withObject:url waitUntilDone:NO];
}
return self;
}
-(void)initMainThreadWithURLString:(NSString*)url {
GDataServiceGoogleYouTube *service = [self youTubeService];
NSString *uploadsID = kGDataYouTubeUserFeedIDUploads;
NSURL *feedURL = [GDataServiceGoogleYouTube youTubeURLForUserID:@"annoyingorange" userFeedID:uploadsID];
[service fetchFeedWithURL:feedURL delegate:self didFinishSelector:@selector(serviceTicket:finishedWithFeed:error:)];
NSLog(@"sent");
}
- (void)serviceTicket:(GDataServiceTicket *)ticket finishedWithFeed:(GDataFeedBase *)aFeed error:(NSError *)error {
self.feed = (GDataFeedYouTubeVideo *)aFeed;
NSLog(@"success.");
}
【问题讨论】:
标签: iphone youtube-api gdata