2010-08-12 55 views
1

我試圖將GData/YouTubeAPI整合到我的項目中,但我有點卡住了。我用的是在這個帖子中給出的代碼:@selector()不工作? YouTube的API GData的問題

Any examples/tutorials on using Google GData API - Youtube on iphone?

我的問題是,該功能的要求:finishedWithFeed:錯誤:「當服務的GData完成抓取數據從interwebs不叫。

我的程序編譯並運行 - 並沒有運行時錯誤出現。我也檢查並且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."); 
} 

回答

2

是您在主線程代碼,並返回到啓動提取後的運行循環?回調僅在應用程序的運行循環正在旋轉時發生。