Mover a la lista de reproducción de carpeta no funciona
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):
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) } ...
Crear un
SPPlaylist
:[[[SPSession sharedSession] userPlaylists] createPlaylistWithName:@"My Playlist"]
.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]
.Observar la
playlists
propiedad y mover a la lista de reproducción creada para miSPPlaylistFolder
(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 SPPlaylist
s a la misma, sin que en realidad se han creado?
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.