Mex*_*ood 7 ipod mpmediaquery ios
我需要按顺序从iOS设备获取N个最近播放的歌曲列表.
目前,我能想象的唯一方法是将所有歌曲通过MPMediaQuery并手动排序lastPlayedDate.
这是一个可能很昂贵的操作,我想知道是否有更好的方法.
编辑:经过一些测试,这是一个非常昂贵的操作.在2500首歌曲的测试库中,花了大约20秒时间:
任何改进的建议将不胜感激.
编辑2:现在解决了,但只是为了记录这里我正在做的事情.
我正在使用如下所述的块进行排序:https://stackoverflow.com/a/805589/112702.简单地将排序方法改为布莱恩的答案,在iPod Touch 3上将我的速度提高了近20倍.
一种方法是MPMediaItem从你得到的数组中取出MPMediaQuery并MPMediaItemPropertyLastPlayedDate使用以下方法对其进行排序NSSortDescriptor:
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);
Run Code Online (Sandbox Code Playgroud)
这是按照最近播放的新阵列排序的.我在iPhone 4S上使用2000首歌曲进行了测试,花了0.98秒.
| 归档时间: |
|
| 查看次数: |
2640 次 |
| 最近记录: |