代码之家  ›  专栏  ›  技术社区  ›  jmont

@选择器()不工作?youtube API GData问题

  •  1
  • jmont  · 技术社区  · 14 年前

    我正在尝试将GData/YouTubeAPI集成到我的项目中,但是我有点卡住了。我使用了这篇文章中给出的代码:

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

    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.");
    }
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Greg Robbins    14 年前

    代码是否在主线程上,并在启动获取后返回到运行循环?回调仅在应用程序的运行循环旋转时发生。