我需要使用我的 iPhone 应用程序从我的 iPod 库中取出 25 首播放次数最多的歌曲。我正在使用 MPMediaQuery。
一种解决方案是遍历所有轨道,并通过 MPMediaItemPropertyAlbumTrackCount 进行比较。但我认为这有点低效。有没有办法直接获取最常播放的项目播放列表?
我需要使用我的 iPhone 应用程序从我的 iPod 库中取出 25 首播放次数最多的歌曲。我正在使用 MPMediaQuery。
一种解决方案是遍历所有轨道,并通过 MPMediaItemPropertyAlbumTrackCount 进行比较。但我认为这有点低效。有没有办法直接获取最常播放的项目播放列表?
我认为您正在寻找MPMediaItemPropertyPlayCount而不是 MPMediaItemPropertyAlbumTrackCount。MPMediaItemPropertyAlbumTrackCount 是歌曲在专辑中出现的曲目编号。
遗憾的是, MPMediaItemPropertyPlayCount不能用于使用MPMediaQuery 进行查询,因为它是用户定义的属性。
您最好的选择是在您的应用首次打开时将所有播放计数存储在像 Core Data 这样的数据库中,并在用户库更改时通过注册通知来更新它。
您可以使用 NSSortDescriptor 对播放次数最多的歌曲进行排序
MPMediaQuery *everything = [[MPMediaQuery alloc] init];
NSSortDescriptor *sorter = [NSSortDescriptor sortDescriptorWithKey:MPMediaItemPropertyPlayCount ascending:NO];
NSArray *sortedSongsArray = [[everything items] sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]];