当前位置 : 主页 > 网络推广 > seo >

检索iOS中按上次播放时间排序的歌曲列表

来源:互联网 收集:自由互联 发布时间:2021-06-16
我需要按顺序从iOS设备获取N个最近播放的歌曲列表. 目前,我能想象的唯一方法是通过MPMediaQuery获取所有歌曲,并通过lastPlayedDate手动对它们进行排序. 这是一个可能很昂贵的操作,我想知道
我需要按顺序从iOS设备获取N个最近播放的歌曲列表.

目前,我能想象的唯一方法是通过MPMediaQuery获取所有歌曲,并通过lastPlayedDate手动对它们进行排序.

这是一个可能很昂贵的操作,我想知道是否有更好的方法.

编辑:经过一些测试,这是一个非常昂贵的操作.在2500首歌曲的测试库中,花了大约20秒时间:

>获取所有歌曲.
>为所有从未播放过的歌曲指定日期(1970年1月1日).
>按日期订购.
>获取前N个条目.

任何改进的建议将不胜感激.

编辑2:现在解决了,但只是为了记录这里我正在做的事情.

我正在使用这里描述的块进行排序:https://stackoverflow.com/a/805589/112702.简单地将排序方法更改为Bryan的答案,在iPod Touch 3上将我的速度提高了近20倍.

一种方法是从MPMediaQuery获取MPMediaItems数组,并使用NSSortDescriptor通过MPMediaItemPropertyLastPlayedDate对其进行排序:

NSTimeInterval start  = [[NSDate date] timeIntervalSince1970];

MPMediaQuery *songsQuery = [MPMediaQuery songsQuery];
NSArray *songsArray = [songsQuery items];

NSSortDescriptor *sorter = [NSSortDescriptor sortDescriptorWithKey:MPMediaItemPropertyLastPlayedDate
                                                         ascending:NO];
NSArray *sortedSongsArray = [songsArray sortedArrayUsingDescriptors:@[sorter]];

NSTimeInterval finish = [[NSDate date] timeIntervalSince1970];
NSLog(@"Execution took %f seconds.", finish - start);

这是按照最近播放的新阵列排序的.我在iPhone 4S上使用2000首歌曲进行了测试,花了0.98秒.

网友评论