获取 iPod 库中项目的专辑年份?

Posted

技术标签:

【中文标题】获取 iPod 库中项目的专辑年份?【英文标题】:Get album year for item in iPod library? 【发布时间】:2011-02-01 12:36:38 【问题描述】:

尝试以下代码:

// Per albums
MPMediaQuery *albumsQuery = [MPMediaQuery albumsQuery];
NSArray *collections = [albumsQuery collections];

for (MPMediaItemCollection *collection in collections)

    NSDate *collectionReleaseDate = [collection valueForProperty: MPMediaItemPropertyReleaseDate];
    NSLog(@"collection release date: %@", collectionReleaseDate);

    MPMediaItem *representativeItem = [collection representativeItem];
    NSDate *representativeItemReleaseDate = [representativeItem valueForProperty: MPMediaItemPropertyReleaseDate];
    NSLog(@"representativeItem release date: %@", representativeItemReleaseDate);


// Just per item
MPMediaQuery *query = [[MPMediaQuery alloc] init];
NSArray *items = [query items];

for (MPMediaItem *item in items)

    NSDate *date = [item valueForProperty: MPMediaItemPropertyReleaseDate];
    NSLog(@"release date: %@", date);

在所有情况下,我的 NSDates 都为零... 但是在 iPod 库中我可以看到日期,所以信息必须是可用的。 正确的获取方式是什么?

【问题讨论】:

发布日期只能使用 ios 4 或更高版本访问。你的目标版本是什么? 使用 iOS SDK 4.2,部署目标 = iOS 4.0,在 iPad 4.2.1 和 iPod 2nd gen 4.2.1 上测试 ... 【参考方案1】:

嗯,我想我已经想通了。我在想 iTunes 中的“年份”列对应于 API 中的 MPMediaItemPropertyReleaseDate - 但这是错误的。我的项目实际上没有发布日期信息。

我还找到了如何获取“年份”信息(我需要),但不幸的是以未记录的方式:

MPMediaItem *item = ...;
NSNumber *yearNumber = [item valueForProperty:@"year"];
if (yearNumber && [yearNumber isKindOfClass:[NSNumber class]])

    int year = [yearNumber intValue];
    if (year != 0)
    
        // do something with year
    

【讨论】:

@Andy 为我在 iOS 6.0 上工作。 @soheilpro 你在 6.0 还是 6.1 上测试? @Andy 6.0。你在 6.1 上测试过吗? @soheilpro 是的,很奇怪,也使用了 6.0,但它对我不起作用。 :// 哇,这太棒了!适用于 ios 9.0.2。我不知道为什么 Apple 不提供这种信息。

以上是关于获取 iPod 库中项目的专辑年份?的主要内容,如果未能解决你的问题,请参考以下文章

快速从 iPod 库中获取专辑列表

如何获取 ipod 库中歌曲的大小?

从 iPod 库中复制项目

iPhone 获取所有专辑/艺术家

播放列表的 MPMediaQuery(在 iPod 上)包括一些专辑

您可以播放 iPod 库中的视频吗?