2012-03-05 2 views
0

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

sp_playlistcontainer_move_playlist (ручки, 0, 3, ложные)

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

sp_playlistcontainer_move_playlist (ручка, 0, 1, ложь)

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

sp_playlistcontainer_move_playlist (ручка, 0, 2, ложные)

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

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

sp_playlistcontainer_move_playlist (ручки, 2, 0, ложь)

поэтому, возможно, целевой показатель не 1 на основе ... или, может быть 0 просто специальный обсаженной. Мысли?

ответ

0

Это 0-based.

операции Перемещение всегда занимают индексы в состоянии в списке ПЕРЕД ничего не будет сделано, так что ...

  • Moving 0 до 1 будет отклонено, потому что это не на самом деле не оп.

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

+0

Так что я полагаю, целевой индекс - это элемент в списке, который вы хотите, чтобы он был до этого, поэтому перемещение 0-> 1 не имеет смысла, поскольку 0 уже до одного, но перемещение 0-> 2 имеет смысл, поскольку это означает, что элемент в слоте 1 перемещается в слот 0, элемент, ранее вставленный в слот 0, перемещается в слот 1 (до 2). Я думаю, еще одна вещь: если я перейду к слоту 3 (т. Е. В конце списка, так как индекс 2 является последним «действительным» индексом), то я получаю перемещенный обратный вызов, говорящий, что newPosition равен 3, хотя в на самом деле это 2. –

Смежные вопросы