我现在正在播放带有iPodMusicPlayer
加载到myArray的iPod库中的歌曲。
我们可以使用indexOfNowPlayingItem
从NowPlaying音乐中获取索引。
但是当Shuffle Mode
为on
时,indexOfNowPlayingItem
Property的返回索引完全错误。
在ShuffleMode
关闭之前,indexOfNowPlayingItem
可以使用并且正确无误。
但是当ShuffleMode
打开时,indexOfNowPlayingItem计数仅增加1(++)。
indexOfNowPlayingItem++;
对于ShuffleMode
来说不正确。
那么当ShuffleMode开启时如何才能获得正确的索引?
感谢您的帮助。
答案 0 :(得分:2)
我的解决方案是在设置播放列表时,还要设置一个带有(index,MPMediaEntityPropertyPersistentID)播放列表的NSMutableDictionary。
当你需要歌曲索引时,只需获得歌曲持久性ID。
- (void) setPlaylistIndexDictionary:(MPMediaItemCollection *)playlistItems
{
playlistIndexDict = [[NSMutableDictionary alloc] init];
NSNumber *count = [[NSNumber alloc] initWithInt:0];
for (MPMediaItem *item in [playlistItems items]) {
[playlistIndexDict setObject:count forKey:[item valueForProperty:MPMediaEntityPropertyPersistentID]];
count = [NSNumber numberWithInt:count.intValue + 1];
}
}
- (NSString *) getCurrentSongId
{
NSString* songId = [[musicPlayer nowPlayingItem] valueForProperty:MPMediaEntityPropertyPersistentID];
return songId;
}
使用:
NSString *songId = [musicController getCurrentSongId];
int songIndex = [[[musicController playlistIndexDict] objectForKey:songId] intValue];