Перемещение плейлиста в папку не работает

StackOverflow https://stackoverflow.com/questions/9464280

  •  13-11-2019
  •  | 
  •  

Вопрос

У меня возникли проблемы с перемещением недавно созданного SPPlaylist в (возможно, недавно созданный) SPPlaylistFolder.

Идея состоит в том, чтобы создать папку в учетной записи пользователя Spotify, куда я могу добавлять плейлисты, созданные из моего приложения.Если такая папка не создана, я создаю новую. SPPlaylistFolder и сохраните идентификатор папки для дальнейшего использования.

Вот что я делаю (я опустил части кода, которые не интересны для этой темы):

  1. Если 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)
    }
    
    ...
    
  2. Создать SPPlaylist: [[[SPSession sharedSession] userPlaylists] createPlaylistWithName:@"My Playlist"].

  3. Используйте КВО, чтобы наблюдать за контейнером. playlists и получите уведомление о создании плейлиста: [[[SPSession sharedSession] userPlaylists] addObserver:self forKeyPath:@"playlists" options:0 context:nil].

  4. Соблюдайте 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, может потребоваться несколько минут.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top