@selector () не работает?проблемы API GData YouTube - PullRequest
1 голос
/ 13 августа 2010

Я пытаюсь интегрировать GData / YouTubeAPI в свой проект, но я немного застрял.Я использовал код, приведенный в этом сообщении:

Какие-либо примеры / учебные пособия по использованию Google GData API - Youtube на iphone?

Моя проблема в том, что функция 'request: finishWithFeed: error: 'не вызывается, когда служба GData завершает сбор данных из межсетевого пространства.

Моя программа компилируется и запускается, и никаких ошибок времени выполнения не возникает.Я также проверил, и feedURL возвращает действительный URL.Я отладил это, и 'service' удалось вернуть значение.

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 Ответ

2 голосов
/ 14 августа 2010

Ваш код находится в главном потоке и возвращается в цикл выполнения после инициации извлечения?Обратные вызовы происходят только тогда, когда цикл запуска приложения вращается.

...