Перемещение списка воспроизведения в папку не работает
У меня проблемы с перемещением недавно созданного 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
с этим, без того, чтобы это фактически не было создано?
1 ответ
После обновления моего кода со ссылкой на эту проблему на cocoalibspotify, он работает лучше. Сначала я не понял, как работает синхронизация с сервисом Spotify. Например, для отражения изменений в клиенте Spotify для настольного компьютера может потребоваться несколько минут.