У меня есть NSArray песен и хочется помещать их в список воспроизведения. Когда я играю в плейлист, я использую indexOfObject
для определения индекса текущей песни в очереди. Я уже преодолел isEqual
, поэтому, чтобы показать, что два медиафайла были одинаковыми и предпочли бы не взламывать этот метод. Я попробовал NSOrderedSet вместо NSArray, и он отображал каждую песню один раз, а не количество экземпляров одной и той же песни. Является ли их классом, который смешивает NSArray и NSOrderedSet, так что каждый индекс является уникальным объектом, но могут быть дублированные объекты с разными индексами?indexOfObject с дублирующимися объектами
Код:
- (PlayerItem *)nextSong{
if(queue.count > 0){
NSInteger songIndex = [queue indexOfObject:currentSong];
NSLog(@"%ld in %lu", (long)songIndex, (unsigned long)queue.count);
songIndex = songIndex + 1;
if (songIndex < [queue count]){
return queue[songIndex];
}else{
return queue[0];
}
}
}
return nil;
}
Комментарий Снизу:
Я имею в виду, если я цикл бросил песни, чем он может играть песни 1, затем 1 раз затем 2 затем 3 затем 3 раз. Это невозможно, потому что индекс indexOfObject всегда возвращает первый дублирующий объект.
Я действительно не понимаю, чего вы хотите достичь. Либо объекты уникальны внутри вашего представления данных, либо нет. Я не знаю, как объекты могут быть уникальными и в то же время иметь дубликаты ... – slecorne
Я имею в виду, если я буду цитировать песни, чем это может сыграть Song 1, затем 1 снова, затем 2, затем 3, затем 3 снова. Это невозможно, потому что indexOfObject всегда возвращает первый дублирующий объект. – kezi
Почему вы используете 'indexOfObject' для доступа к песням в плейлисте? Вы просто перечисляете содержимое плейлиста или что-то совсем другое? – neilco