質問

新しく作成されたSPPlaylistを(おそらく新しく作成された)SPPlaylistFolderに移動しています。

アイデアは、私のアプリケーションから生成されたプレイリストを追加することができるユーザーのSpotifyアカウントにフォルダを作成することです。そのようなフォルダが作成されていない場合は、新しいSPPlaylistFolderを作成し、後で使用するためにフォルダIDを保存します。

これは私がやっていることです(私はこの主題にとって興味深いコードの一部を省略しました):

  1. 以前に保存された場合(すなわち、フォルダ作成されたフォルダ)、そのIDを使用してフォルダインスタンスをロードします。

    ...
    
    NSError *error = nil;
    if (folderId > 0) {
      // try to fetch folder
      folder = [[SPSession sharedSession] playlistFolderForFolderId:folderId inContainer:container];
    }
    
    if (folder == nil) {
      // create folder
      folder = [container createFolderWithName:@"My Folder" error:&error];
    
      // save a reference to the folder in an instance var
      _appFolder = [folder retain];
    
      // (also saving folder.folderId in NSUserDefaults)
    }
    
    ...
    

  2. folderIdSPPlaylistを作成します。

  3. KVOを使用してコンテナの[[[SPSession sharedSession] userPlaylists] createPlaylistWithName:@"My Playlist"]プロパティを守り、プレイリストが作成されたときに通知されます.playlists

  4. [[[SPSession sharedSession] userPlaylists] addObserver:self forKeyPath:@"playlists" options:0 context:nil]プロパティを監視し、作成したプレイリストをMy playlistsに移動します(SPPlaylistFolderは、移動するものとして識別されたプレイリストです):

    ...
    // identify the index of the containerPlaylist
    NSInteger playlistIndex = [[[[SPSession sharedSession] userPlaylists] playlists] indexOfObject:containerPlaylist];
    
    // move playlist
    NSError * error = nil;
    BOOL success = [container movePlaylistOrFolderAtIndex:playlistIndex ofParent:nil toIndex:0 ofNewParent:_appFolder error:&error];
    if (success) {
      // This should be a great success. But the playlist hasn't been moved, although the error variable is nil.
    }
    
    ...
    

    次の手順の後、PlayListとフォルダの両方が作成されましたが、プレイリストは移動されていません。そして、containerPlaylistメソッドへの無効な入力を示すエラーが発生しません。

    ここでは明白なものがありませんか?それとも、どういうわけか欠陥のある移動機能は?

    注:このコードを使用して、以前に作成されたプレイリストを移動しようとしました(すなわち、「マイプレイリスト」という名前のすべてのプレイリストをフォルダに移動)。

    編集1:私はこれをさらに少し調査し、実際にはいくらかの動きの行動が起こった。しかし、私はコードのいくつかを書き直さなければならず、数回(または後期の段階で)移動を実行する必要がありました。これは、後で新しいセッションでログに記録されたときにプレイリストを移動することが可能であるため、これは完全に同期されていない/最新のデータに関するデータに関連しているようです。

    同期の問題であることは可能です。これは、movePlaylistOrFolderAtIndexが作成され、それを実際に作成されていないことがありますか?

役に立ちましたか?

解決

CocoAlibSpotify のこの問題は、よりよく機能しています。。最初は実現しなかったことは、Spotifyサービスとの同期がどのように機能していましたかでした。たとえば、Spotify Desktopクライアントに変更が反映されるまで簡単に数分かかることがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top