我有一個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再次 然後2然後3然後3再次播放歌曲1即可。這是不可能的,因爲 indexOfObject總是返回第一個重複對象。
我真的不明白你想達到什麼目的。任何對象在數據表示中都是唯一的。我不知道對象可能是獨特的,同時有重複的... – slecorne
我的意思是如果我循環投擲歌曲比它可以播放歌曲1然後1再次然後2然後3然後再次3。這是不可能的,因爲indexOfObject總是返回第一個重複對象。 – kezi
爲什麼使用'indexOfObject'來訪問播放列表中的歌曲?你是簡單地列舉播放列表的內容還是完全不同的東西? – neilco