2010-08-12 12 views
1

J'essaie d'intégrer GData/YouTubeAPI dans mon projet mais je suis un peu coincé. J'ai utilisé le code qui a été donné dans ce post:@selector() ne fonctionne pas? API youtube Problèmes GData

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

Mon problème est que la fonction « demande: finishedWithFeed: erreur: » est pas appelé lorsque le service GData est fait saisir des données au large des interwebs. Mon programme compile et s'exécute - et aucune erreur d'exécution ne se présente. J'ai également vérifié et feedURL renvoie une URL valide. J'ai débogué ceci et 'service' réussit à renvoyer une valeur.

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:)]; 

C'est l'en-tête de la fonction que je suis en train d'obtenir un service d'appeler quand son fait, il est situé dans le même objet que l'autre code que j'ai posté

- (void)request:(GDataServiceTicket *)ticket finishedWithFeed:(GDataFeedBase *)aFeed error:(NSError *)error; 

SOLUTION - -

assurez-vous que son fonctionnement sur thread principal -

-(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."); 
} 

Répondre

2

votre code sur le thread principal, et le retour à la boucle d'exécution après avoir lancé le fetch? Les rappels se produisent uniquement lorsque la boucle d'exécution de l'application tourne.