Перемешивание и отмена перемешивания NSMutableArray (поиск правильного индекса) - PullRequest
0 голосов
/ 01 марта 2012

Я внедряю музыкальный проигрыватель в свое приложение, и когда пользователь выбирает список воспроизведения, он может контролировать режимы случайного и повторного воспроизведения.

Первоначально, отдельные MPMediaItem s списка воспроизведения сохраняются в NSArray (который затем обрабатывается функцией для воспроизведения музыки). Когда пользователь переключает режим перемешивания в положение ON, массив копируется в NSMutableArray, и объекты перемешиваются (с текущей воспроизводимой композицией с индексом 0). Я хорошо до этого момента; проблема возникает, когда пользователь выключает режим случайного воспроизведения.

Как и в музыкальном приложении iPod, когда пользователь выключает режим воспроизведения в случайном порядке, восстанавливается исходный список воспроизведения с расположением текущей воспроизводимой песни в исходном массиве.

По сути, я хочу, чтобы это произошло:

  1. Пользователь выбирает дорожку 5 из 12 в списке воспроизведения: теперь воспроизводится дорожка 5 из 12
  2. Пользователь включает режим перемешивания: теперь воспроизводится дорожка 1 из 12
  3. Пользователь воспроизводит нажатия Следующая песня: Сейчас играет трек 2 из 12
  4. Пользователь отключает режим случайного воспроизведения: теперь воспроизводится трек 7 из 12 (где трек 7 - местоположение этой песни в исходном плейлисте, который был дорожка 2 в произвольном списке воспроизведения).

Надеюсь, я прояснил это достаточно. Я был бы очень признателен за некоторые советы о том, как мне сделать это наиболее эффективным способом.

Спасибо!

1 Ответ

2 голосов
/ 01 марта 2012

Добавьте orderValue для объекта, который вы положили в NSArray, который будет равен индексу объекта. Таким образом, вы можете перемешать массив и восстановить исходный порядок в соответствии с этим значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...