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

6
尝试以下代码:
// 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);
}

在所有情况下,我都得到了NSDate的nil值... 但是在iPod库中,我可以看到日期,因此信息必须是可用的。 获取它的正确方式是什么?

发布日期仅可在iOS 4或更高版本中访问。您的目标版本是什么? - Evan Mulawski
使用iOS SDK 4.2,部署目标为iOS 4.0,在iPad上进行4.2.1测试和iPod第二代4.2.1测试。 - ivanzoid
1个回答

20

我想我已经弄清楚了。我以为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
@soheilpro,你是在6.0还是6.1上进行测试? - pronebird
@Andy 6.0。你在6.1上测试过了吗? - soheilpro
@soheilpro 是啊,很奇怪,我也用了6.0版本,但是还是不行。 :/ - pronebird
哇,这太棒了!适用于iOS 9.0.2。我不知道为什么苹果不提供那种信息。 - moumoute6919
谢谢!我刚刚检查了一下,它也适用于iOS 9.3.2。 - L A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接