将播放列表移动到文件夹不起作用

时间:2012-02-27 11:30:19

标签: spotify playlists

我在将新创建的SPPlaylist移动到(可能是新创建的)SPPlaylistFolder时遇到问题。

我们的想法是在用户的Spotify帐户中创建一个文件夹,我可以在其中添加从我的应用程序生成的播放列表。如果没有创建这样的文件夹,我正在创建一个新的SPPlaylistFolder并保存文件夹ID以供以后使用。

这就是我正在做的事情(我已经省略了对这个主题不感兴趣的部分代码):

  1. 如果先前保存了folderId(即创建了一个文件夹),请使用该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. 创建SPPlaylist[[[SPSession sharedSession] userPlaylists] createPlaylistWithName:@"My Playlist"]

  3. 使用KVO观察容器的playlists属性,并在创建播放列表时收到通知:[[[SPSession sharedSession] userPlaylists] addObserver:self forKeyPath:@"playlists" options:0 context:nil]

  4. 观察playlists属性并将创建的播放列表移至我的SPPlaylistFoldercontainerPlaylist是我确定要移动的播放列表):

    ...
    // 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.
    }
    
    ...
    
  5. 完成这些步骤后,播放列表和文件夹都已创建,但播放列表尚未移动。而且我没有收到任何错误,表明movePlaylistOrFolderAtIndex方法输入无效。

    我错过了一些明显的东西吗?或者移动功能是否存在缺陷?

    注意:我还尝试使用此代码移动之前创建的播放列表(即将名为“我的播放列表”的所有播放列表移动到该文件夹​​中)。

    编辑1:我对此进行了进一步的调查,实际上还有一些动作正在进行中。但是我不得不重写一些代码并多次执行移动(或者在稍后阶段)。看起来这与SPSession中的数据没有完全同步/最新(?)有关,因为稍后使用新会话进行日志记录时可以移动播放列表。

    它是否可能是一个同步问题,即libspotify认为SPPlaylistFolder已创建并将SPPlaylist移至它,而实际上尚未创建它?

1 个答案:

答案 0 :(得分:0)

在参考this issue on cocoalibspotify更新我的代码后,它的效果更好。我最初没有意识到的是与Spotify服务的同步是如何工作的。例如,可能需要几分钟才能将更改反映在Spotify桌面客户端中。