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):

  1. 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)
    }
    
    ...
    
  2. Criar um SPPlaylist: [[[SPSession sharedSession] userPlaylists] createPlaylistWithName:@"My Playlist"].

  3. 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].

  4. Observe o playlists propriedade e mova a lista de reprodução criada para meu SPPlaylistFolder (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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top