У меня проблемы с перемещением недавно созданного 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"]
.
Используйте KVO для просмотра свойства контейнера 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
s, но на самом деле он еще не создан?