1

GData/YouTubeAPI を自分のプロジェクトに統合しようとしていますが、少し行き詰まっています。この投稿で与えられたコードを使用しました:

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

1 に答える 1

2

あなたのコードはメインスレッドにあり、フェッチを開始した後に実行ループに戻りますか? コールバックは、アプリの実行ループが回転しているときにのみ発生します。

于 2010-08-14T05:23:02.087 に答える