我一直在玩libspotify并遇到一些奇怪的事情。 sp_playlistcontainer_move_playlist 0的索引参数是基于还是基于1?它们似乎都是,或者可能都不是:)特别是如果我有三个播放列表,我会注意到以下结果:
sp_playlistcontainer_move_playlist(handle,0,3,false)
成功并将播放列表从索引0(播放列表列表中的第一个)移动到播放列表列表的末尾。
sp_playlistcontainer_move_playlist(handle,0,1,false)
失败,返回SP_ERROR_INVALID_INDATA,根据API规范,这似乎表示我'试图将文件夹移动到自身'。由此我猜测输入(原始)索引是基于0的,并且目标索引是基于1的。这很奇怪,但是这个
sp_playlistcontainer_move_playlist(handle,0,2,false)
确实会将第一个播放列表(从索引0)移动到播放列表列表中的第二个插槽(我称之为索引1,但根据libspotify显然是2)。
当然这也有效
sp_playlistcontainer_move_playlist(handle,2,0,false)
所以也许目标指数不是基于1 ...或者0可能只是特殊的。想法?
答案 0 :(得分:0)
它基于0。
在完成任何操作之前,移动操作始终采用列表状态中的索引,因此......
移动0到1将被拒绝,因为它实际上是无操作。
要将第一个(索引0)播放列表移动到第二个位置(索引1),您实际上将其移动到索引2 ,因为您希望它位于当前位于索引1的播放列表之后< / strong>即可。一旦你进行了调用,libSpotify将通过将索引0移动到索引1之后“提交”事务,然后将所有内容移动到一个插槽中以填充索引0处留下的空缺。