如何在最近 5 天内按播放次数获得 iTunes 库前 10 首歌曲?

Posted

技术标签:

【中文标题】如何在最近 5 天内按播放次数获得 iTunes 库前 10 首歌曲?【英文标题】:How to get iTunes Library top 10 song by playcount within recent 5days? 【发布时间】:2012-11-10 09:05:27 【问题描述】:

我正在尝试在 ios 中获取 iTunes 库。 并尝试在 5 天内检索播放次数排名前 10 的歌曲。

你能告诉我怎么做吗?这是我的代码。 MPMediaPropertyPredicate 不是正确答案...我猜。

MPMediaQuery *everything = [[MPMediaQuery alloc] init];
NSLog(@"Logging items from a generic query...");
NSArray *itemsFromGenericQuery = [everything items];
for (MPMediaItem *song in itemsFromGenericQuery) 
    NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
    NSString *artistName = [song valueForProperty:MPMediaItemPropertyArtist];
    NSString *lastPlayeddate = [song valueForProperty:MPMediaItemPropertyLastPlayedDate];
    NSString *playCount = [song valueForProperty:MPMediaItemPropertyPlayCount];

    NSLog (@"%@", songTitle);
    text.text = [NSString stringWithFormat:@"%@\n%@ %@ %@ %@", text.text, songTitle, artistName, lastPlayeddate, playCount];

一切顺利。

【问题讨论】:

【参考方案1】:

显然,播放计数被视为“用户定义”键,因此不能在MPMediaPropertyPredicate中使用

见http://developer.apple.com/library/ios/documentation/mediaplayer/reference/MPMediaItem_ClassReference/Reference/Reference.html#//apple_ref/doc/uid/TP40008211-CH1-SW38

您必须手动迭代歌曲并检索这些属性。

enumerateValuesForProperties:usingBlock: 可能是您最有效的选择。 http://developer.apple.com/library/ios/documentation/mediaplayer/reference/MPMediaEntity_ClassReference/Reference/Reference.html#//apple_ref/occ/instm/MPMediaEntity/enumerateValuesForProperties:usingBlock:

【讨论】:

以上是关于如何在最近 5 天内按播放次数获得 iTunes 库前 10 首歌曲?的主要内容,如果未能解决你的问题,请参考以下文章

如何提高 Oracle 中仅加载最近 5 天内修改的项目的 SQL 性能?

如何查询最近 30 天内添加的产品(HSQLDB)

如何循环消息

如何从 col2 获得在 col1 7 天内具有相同类别的最早日期?

近七天内用户登录次数sql语句怎么写?

iOS 手动增加播放次数、上次播放日期等