SPAsyncLoading waitUntilLoaded的问题

时间:2012-06-25 19:39:20

标签: cocoalibspotify-2.0

我在使用SPAsyncLoading类加载播放列表时遇到问题。有时呼叫根本不会返回,有时候很长一段时间后。

我使用以下代码从网址加载播放列表:

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不会返回。

我的代码有问题吗?

1 个答案:

答案 0 :(得分:0)

在这一行:[SPAsyncLoading waitUntilLoaded:userPlayLists.playlists then:^(NSArray *result) {

...将userPlayLists.playlists替换为userPlayLists.flattenedPlaylists - 文件夹不符合SPAsyncLoading

请注意,+[SPAsyncLoading waitUntilLoaded:then:]已从CocoaLibSpotify的最新版本中删除,仅剩+[SPAsyncLoading waitUntilLoaded:timeout:then:]。这是为了确保即使没有加载东西,总是得到回调。

可能导致无法加载的原因:

  • 网络速度缓慢和/或已关闭。
  • 元数据服务缓慢和/或关闭。
  • 播放列表服务缓慢和/或关闭。

由于Spotify是一项互联网服务,因此您需要在加载元数据和播放列表时对问题做出响应。 +[SPAsyncLoading waitUntilLoaded:timeout:then:]通过为您提供已列出的内容(如果在超时发生时未完成所有内容已加载而未加载的内容)来帮助您。