CocoaLibSpotify创建播放列表结尾

时间:2013-07-13 00:21:21

标签: iphone ios cocoalibspotify-2.0 libspotify

我正在创建一个基于cocoaLibSpotify的IOS应用程序。

在某些方面,我正在从一系列歌曲中创建Spotify播放列表。我之前已获得所有Spotify URI,然后创建播放列表并逐个添加所有曲目。

下面的代码在应用程序的逻辑类中,然后我有一个控制器来显示结果。 问题是我从控制器调用这个逻辑,但我不知道在添加过程完成后返回的方法。我试图实现一个委托,但我不知道该怎么做......

将曲目添加到播放列表的正确方法是什么?我一直在搜索文档和GitHub存储库,但我只找到了一个带有两个嵌套轨道添加的例子......:S

提前致谢! (对不起我的英语)

- (void) createPlaylist:(NSArray*)spotifyURIs withName:(NSString*)name {

    int songsRead = 0;
    [container createPlaylistWithName:name callback:^(SPPlaylist *createdPlaylist) {

        [SPAsyncLoading waitUntilLoaded:createdPlaylist timeout:kSPAsyncLoadingDefaultTimeout then:^(NSArray *loadedPlaylist, NSArray *notLoadedPlaylist) {

            for (int i=[spotifyURIs count]-1; i>=0; i--) {

                NSString *trackURI = spotifyURIs[i];
                if (trackURI != nil){
                    [[SPSession sharedSession] trackForURL:[NSURL URLWithString:trackURI] callback:^(SPTrack *track) {
                        if (track != nil) {
                            [createdPlaylist addItems:[NSArray arrayWithObject: track] atIndex:[[createdPlaylist items] count] callback:nil];
                        }
                    }];
                }

                songsRead++;

                // If I have read the whole tracklist, end of the process, returning to controller...
                if (songsRead == [spotifyURIs count]){
                    // ...
                }
            }
        }];
    }];
}

1 个答案:

答案 0 :(得分:2)

您需要在新播放列表上使用KVO系统或使用BLOCKS 你可以实现这样的东西

typedef void(^ spotifycompletionWithData)(id data);

- (void)addTrack:(NSString *)trackURI withCompletionBlock:(spotifycompletionWithData)CompletionBlock;

然后每当你调用该函数时,你应该在完成块中返回加载的SPTRACK,我希望它能帮助