Pregunta

Estoy teniendo problemas con la mudanza de un recién creado SPPlaylist para (posiblemente recién creado) SPPlaylistFolder.

La idea es crear una carpeta en la carpeta de usuario de la cuenta de Spotify, donde puedo agregar listas de reproducción generadas a partir de mi aplicación.En caso de no se haya creado la carpeta, estoy creando un nuevo SPPlaylistFolder y guardar el id de la carpeta para su posterior uso.

Esto es lo que estoy haciendo (he omitido las partes del código que no sean interesantes para este tema):

  1. Si un folderId ha sido guardado previamente (es decir,una carpeta creada), el uso de la ID para cargar la carpeta ejemplo:

    ...
    
    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. Crear un SPPlaylist: [[[SPSession sharedSession] userPlaylists] createPlaylistWithName:@"My Playlist"].

  3. El uso de KVO para observar el contenedor playlists la propiedad y obtener una notificación cuando la lista de reproducción que ha creado: [[[SPSession sharedSession] userPlaylists] addObserver:self forKeyPath:@"playlists" options:0 context:nil].

  4. Observar la playlists propiedad y mover a la lista de reproducción creada para mi SPPlaylistFolder (containerPlaylist es la lista de reproducción que he identificado como el movimiento):

    ...
    // 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.
    }
    
    ...
    

Después de estos pasos, tanto la lista de reproducción y carpetas se han creado, pero la lista de reproducción no se ha movido.Y no estoy recibiendo ningún error indicando cualquier entrada no válida para la movePlaylistOrFolderAtIndex método.

Me estoy perdiendo algo que es obvio aquí?O es la funcionalidad de mover defectuoso de alguna manera?

Nota:También he probado a usar este código para mover las listas de reproducción que han sido creados previamente (es decir,mover todas las listas de reproducción llamada "Mi lista de Reproducción" en la carpeta).

EDIT 1: He investigado un poco más y en realidad tiene algún movimiento de acción.Pero tuve que reescribir parte del código y realizar el movimiento varias veces (o en una etapa posterior).Parece que esto está relacionado con los datos en SPSession no ser totalmente sincronizado/up-to-date (?) ya que es posible mover las listas de reproducción de registro cuando más tarde con la sesión de nuevo.

Es posible que una sincronización cuestión, es decir,libspotify cree que la SPPlaylistFolder se crea y se mueve SPPlaylists a la misma, sin que en realidad se han creado?

¿Fue útil?

Solución

Después de haber actualizado mi código con referencia a este problema en cocoalibspotify, se trabaja mejor.Lo que no me di cuenta al principio fue como la sincronización con el servicio de Spotify trabajado.Fácilmente puede tomar varios minutos para que los cambios se reflejen en el cliente de escritorio de Spotify, por ejemplo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top