Iphone CocoaLibSpotify创建播放列表结束

Iphone CocoaLibSpotify创建播放列表结束,iphone,ios,cocoalibspotify-2.0,libspotify,Iphone,Ios,Cocoalibspotify 2.0,Libspotify,我正在创建一个基于cocoaLibSpotify的IOS应用程序 在某种程度上,我正在从一系列歌曲中创建Spotify播放列表。我之前已经获得了所有Spotify URI,然后我创建了播放列表并逐个添加了所有曲目 下面的代码在应用程序的逻辑类中,然后我有一个控制器来显示结果。 问题是,我从控制器调用了这个逻辑,但我不知道在添加过程完成后如何返回。我已经尝试实现一个委托,但我不知道如何做到这一点 向播放列表中添加曲目的正确方法是什么?我一直在文档和GitHub存储库中搜索,但我只找到了一个包含两个

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

在某种程度上,我正在从一系列歌曲中创建Spotify播放列表。我之前已经获得了所有Spotify URI,然后我创建了播放列表并逐个添加了所有曲目

下面的代码在应用程序的逻辑类中,然后我有一个控制器来显示结果。 问题是,我从控制器调用了这个逻辑,但我不知道在添加过程完成后如何返回。我已经尝试实现一个委托,但我不知道如何做到这一点

向播放列表中添加曲目的正确方法是什么?我一直在文档和GitHub存储库中搜索,但我只找到了一个包含两个嵌套轨迹添加的示例…:

提前谢谢!(为我的英语感到抱歉)


您需要的是在新播放列表上使用KVO系统或使用块 您可以实现这样的功能

typedef void(^spotifycompletionWithData)(id数据)

-(void)addTrack:(NSString*)trackURI with CompletionBlock:(SpotifyCompletionWith Data)CompletionBlock

然后,无论何时调用该函数,都应该在完成块中返回加载的SPTRACK,我希望这会有所帮助

- (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]){
                    // ...
                }
            }
        }];
    }];
}