Параметры индекса libspotify API. 0 или 1? - PullRequest
0 голосов
/ 06 марта 2012

Я играл с libspotify и столкнулся с чем-то странным. Параметры индекса для sp_playlistcontainer_move_playlist 0 основаны или 1 основаны? Кажется, они оба, а может и нет :). В частности, если у меня есть три плейлиста, я замечаю следующие результаты:

sp_playlistcontainer_move_playlist (дескриптор, 0, 3, false)

завершается успешно и перемещает список воспроизведения с индексом 0 (первый в списке списков воспроизведения) в конец списка списков воспроизведения.

sp_playlistcontainer_move_playlist (дескриптор, 0, 1, false)

завершается неудачно, возвращая SP_ERROR_INVALID_INDATA, который в соответствии со спецификациями API, по-видимому, указывает на то, что я «пытаюсь переместить папку в себя». Исходя из этого, я догадался, что входной (исходный) индекс равен 0, а целевой индекс равен 1. Это странно, но это

sp_playlistcontainer_move_playlist (дескриптор, 0, 2, false)

действительно перемещает первый список воспроизведения (из индекса 0) во второй слот в списке списков воспроизведения (в том, что я назвал бы индексом 1, но, по-видимому, равен 2 в соответствии с libspotify).

Конечно, это также работает

sp_playlistcontainer_move_playlist (дескриптор, 2, 0, ложь)

так что, возможно, целевой индекс не основан на 1 ... или 0 - только в специальном регистре. Мысли?

1 Ответ

0 голосов
/ 06 марта 2012

На основе 0.

Операции перемещения всегда принимают индексы в состоянии списка ДО того, как что-либо будет сделано, поэтому ...

  • Перемещение от 0 к 1 будетотклонено, потому что на самом деле это неоперация.

  • Чтобы переместить первый (индекс 0) плейлист на вторую позицию (индекс 1), вы фактически переместите его в индекс 2, так как вы хотите, чтобы он был после списка воспроизведения, который в данный момент имеет индекс 1 .После того, как вы сделаете вызов, libSpotify «зафиксирует» транзакцию, переместив индекс 0 после индекса 1, затем переместив все на один слот вниз, чтобы заполнить свободный пробел, оставшийся в индексе 0.

...