0

SPAsyncLoadingクラスを使用したプレイリストの読み込みに問題があります。呼び出しがまったく返されない場合もあれば、久しぶりに戻る場合もあります。

次のコードを使用して、URLからプレイリストを読み込みます。

NSString *playlistUrl = [Config instance].playlistUrl;
[SPPlaylist playlistWithPlaylistURL:[NSURL URLWithString:playlistUrl] inSession:[SPSession sharedSession] callback:^(SPPlaylist *pl) {
    playlist = pl;
    playlist.delegate = self;

    [SPAsyncLoading waitUntilLoaded:playlist then:^(NSArray *array) {
        NSLog(@"playlist loaded");
    }];
}];

次のコードを使用して、すべてのユーザーのプレイリストを読み込みます。

SPPlaylistContainer *userPlayLists = [[SPSession sharedSession] userPlaylists];

[SPAsyncLoading waitUntilLoaded:userPlayLists then:^(NSArray *result) {

    SPPlaylistContainer *userPlayLists = (SPPlaylistContainer*) [result objectAtIndex:0];

    [SPAsyncLoading waitUntilLoaded:userPlayLists.playlists then:^(NSArray *result) {
          NSLog(@"playlists loaded");
    }];
}];

すべてのユーザーのプレイリストをロードする場合、0個のプレイリストがロードされることもあれば、すべてのプレイリストが使用可能になることもありますが、最後のwaitUntilLoadedは返されません。

私のコードに何か問題がありますか?

4

1 に答える 1

0

この行で:[SPAsyncLoading waitUntilLoaded:userPlayLists.playlists then:^(NSArray *result) {

…置換— フォルダーは準拠しuserPlayLists.playlistsていません。userPlayLists.flattenedPlaylistsSPAsyncLoading

+[SPAsyncLoading waitUntilLoaded:then:]は CocoaLibSpotify の最新ビルドから削除され、残っているだけであることに注意してください+[SPAsyncLoading waitUntilLoaded:timeout:then:]。これは、コンテンツがロードされていない場合でも、常にコールバックを取得できるようにするためです。

読み込まれない理由として考えられるのは、次のとおりです。

  • ネットワークが低速であるか、またはダウンしています。
  • メタデータ サービスが遅いかダウンしています。
  • プレイリスト サービスが遅いかダウンしています。

Spotify はインターネット サービスであるため、メタデータとプレイリストを読み込む際の問題に対応する必要があります。+[SPAsyncLoading waitUntilLoaded:timeout:then:]タイムアウトが発生したときにすべてのロードが完了していない場合、ロードされているものとロードされていないもののリストを提供することで役立ちます。

于 2012-07-03T11:35:20.210 に答える