对NSMutableArray进行改组和取消控制(找到正确的索引)

时间:2012-03-01 16:55:51

标签: objective-c ios cocoa-touch

我正在将音乐播放器应用到我的应用中,当用户选择播放列表时,他们可以控制随机播放和重复播放模式。

最初,播放列表的各个MPMediaItem存储在NSArray中(然后由播放音乐的功能处理)。当用户将随机播放模式切换为ON时,数组将被复制到NSMutableArray并且对象被洗牌(当前播放的歌曲在索引0处)。我很擅长这一点;当用户关闭随机播放模式时会出现问题。

就像在iPod音乐应用程序中一样,当用户关闭随机播放模式时,将恢复原始播放列表,并将当前正在播放的歌曲的位置保留在原始阵列中。

基本上我希望这种情况发生:

  1. 用户在播放列表中选择第12首曲目:现在播放第5首曲目 12
  2. 用户将随机播放模式设为ON:正在播放Track 1 of 12
  3. 用户播放按下一首歌曲:正在播放第二首曲目2
  4. 用户关闭随机播放模式:现在播放第12轨道7(轨道 7是原始播放列表中该歌曲的位置 在混洗的播放列表中跟踪2)。
  5. 我希望我已经说清楚了。我非常感谢有关如何以最有效的方式实现这一目标的一些指导。

    谢谢!

1 个答案:

答案 0 :(得分:2)

为NSArray中放入的对象添加一个orderValue,它等于对象索引。因此,您可以根据此值对数组进行随机播放并恢复原始顺序。