Перемещение плейлиста в папку не работает
Вопрос
У меня возникли проблемы с перемещением недавно созданного SPPlaylist
в (возможно, недавно созданный) SPPlaylistFolder
.
Идея состоит в том, чтобы создать папку в учетной записи пользователя Spotify, куда я могу добавлять плейлисты, созданные из моего приложения.Если такая папка не создана, я создаю новую. SPPlaylistFolder
и сохраните идентификатор папки для дальнейшего использования.
Вот что я делаю (я опустил части кода, которые не интересны для этой темы):
Если
folderId
было ранее сохранено (т.е.папка создана), используйте этот идентификатор для загрузки экземпляра папки:... 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) } ...
Создать
SPPlaylist
:[[[SPSession sharedSession] userPlaylists] createPlaylistWithName:@"My Playlist"]
.Используйте КВО, чтобы наблюдать за контейнером.
playlists
и получите уведомление о создании плейлиста:[[[SPSession sharedSession] userPlaylists] addObserver:self forKeyPath:@"playlists" options:0 context:nil]
.Соблюдайте
playlists
и переместите созданный плейлист в свойSPPlaylistFolder
(containerPlaylist
это плейлист, который я определил как тот, который нужно переместить):... // 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. } ...
После этих действий и список воспроизведения, и папка были созданы, но список воспроизведения не был перемещен.И я не получаю никаких ошибок, указывающих на неверный ввод в movePlaylistOrFolderAtIndex
метод.
Я упускаю здесь что-то очевидное?Или функциональность перемещения как-то некорректна?
Примечание:Я также пытался использовать этот код для перемещения списков воспроизведения, которые были созданы ранее (т.е.переместите все плейлисты с именем «Мой плейлист» в папку).
РЕДАКТИРОВАТЬ 1: Я исследовал это немного дальше и действительно получил некоторые движущиеся действия.Но мне пришлось переписать часть кода и выполнить перемещение несколько раз (или на более позднем этапе).Похоже, это связано с тем, что данные в SPSession не полностью синхронизированы/обновлены (?), поскольку можно перемещать списки воспроизведения при более позднем входе в новый сеанс.
Возможно ли, что это проблема синхронизации, т.е.libspotify считает, что SPPlaylistFolder
создается и движется SPPlaylist
в чем дело, если он еще не создан?
Решение
После обновления моего кода со ссылкой на этот выпуск на Cocolibspotify, он работает лучше.Чего я сначала не понял, так это того, как работает синхронизация со службой Spotify.Например, для того, чтобы изменения отразились в настольном клиенте Spotify, может потребоваться несколько минут.