Mover a playlist para a pasta não funciona
Pergunta
Estou tendo problemas para mover um arquivo recém-criado SPPlaylist
para um (possivelmente recém-criado) SPPlaylistFolder
.
A ideia é criar uma pasta na conta Spotify do usuário, onde eu possa adicionar playlists geradas a partir da minha aplicação.Se essa pasta não tiver sido criada, estou criando uma nova SPPlaylistFolder
e salve o ID da pasta para uso posterior.
Isto é o que estou fazendo (omiti partes do código que não são interessantes para este assunto):
Se um
folderId
foi salvo anteriormente (ou seja,uma pasta criada), use esse ID para carregar a instância da pasta:... 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) } ...
Criar um
SPPlaylist
:[[[SPSession sharedSession] userPlaylists] createPlaylistWithName:@"My Playlist"]
.Use KVO para observar o contêiner
playlists
propriedade e seja notificado quando a lista de reprodução for criada:[[[SPSession sharedSession] userPlaylists] addObserver:self forKeyPath:@"playlists" options:0 context:nil]
.Observe o
playlists
propriedade e mova a lista de reprodução criada para meuSPPlaylistFolder
(containerPlaylist
é a playlist que identifiquei como aquela a ser movida):... // 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. } ...
Após essas etapas, a lista de reprodução e a pasta foram criadas, mas a lista de reprodução não foi movida.E não estou recebendo nenhum erro indicando qualquer entrada inválida no movePlaylistOrFolderAtIndex
método.
Estou faltando algo óbvio aqui?Ou a funcionalidade de movimentação apresenta falhas de alguma forma?
Observação:Também tentei usar esse código para mover playlists criadas anteriormente (ou seja,mova todas as playlists chamadas "Minha Playlist" para a pasta).
EDITAR 1: Eu investiguei isso um pouco mais e realmente consegui alguma ação comovente acontecendo.Mas tive que reescrever parte do código e executar a mudança várias vezes (ou posteriormente).Parece que isso está relacionado ao fato de os dados no SPSession não estarem totalmente sincronizados/atualizados (?) já que é possível mover playlists ao fazer login posteriormente com uma nova sessão.
É possível que seja um problema de sincronização, ou seja,libspotify acredita que o SPPlaylistFolder
é criado e se move SPPlaylist
é para isso, sem que ele realmente tenha sido criado ainda?
Solução
Depois de atualizar meu código com referência a esse problema no cocoalibspotify, está funcionando melhor.O que não percebi a princípio foi como funcionava a sincronização com o serviço Spotify.Pode levar vários minutos para que as alterações sejam refletidas no cliente de desktop Spotify, por exemplo.