0

cocoaLibSpotify に基づいて IOS アプリを作成しています。

ある時点で、一連の曲から Spotify プレイリストを作成しています。以前にすべての Spotify URI を取得してから、プレイリストを作成し、すべてのトラックを 1 つずつ追加しました。

以下のコードはアプリのロジック クラスにあり、結果を表示するコントローラーがあります。問題は、コントローラーからこのロジックを呼び出すことですが、追加プロセスが終了したときに戻る方法がわかりません。デリゲートを実装しようとしましたが、その方法がわかりません...

プレイリストにトラックを追加する正しい方法はどれですか? ドキュメントと GitHub リポジトリを検索してきましたが、2 つのネストされたトラックの追加を含む例しか見つかりませんでした... :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]){
                    // ...
                }
            }
        }];
    }];
}
4

1 に答える 1

2

必要なのは、新しいプレイリストで KVO システムを使用するか、BLOCKS を使用してこのようなものを実装することです

typedef void (^spotifycompletionWithData)(id データ);

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

次に、関数を呼び出すたびに、完了ブロック内でロードされた SPTRACK を返す必要があります。

于 2013-10-02T10:29:54.237 に答える