在iOS7上获取类型列表

时间:2013-10-30 20:08:33

标签: ios7 mpmediaitem mpmediaquery mpmediaitemcollection

我尝试使用此代码在iOS 7.0.3上获取iPhone 5S的流派列表:

    MPMediaQuery *query = [MPMediaQuery genresQuery];
    for (MPMediaItemCollection *item in [query collections]) {
        NSLog(@"%@", [[item representativeItem] valueForProperty: MPMediaItemPropertyGenrePersistentID]);
        NSLog(@"%@", [[item representativeItem] valueForProperty: MPMediaItemPropertyGenre]);
    }

问题是,此代码获得了正确的流派计数,但没有正确的名称。 一些名称和身份证明显示两次,其他一些则丢失。

该代码在iOS 6.1.3的iPod上运行良好。

有人为我提供tipp吗?

谢谢, 斯蒂芬

1 个答案:

答案 0 :(得分:1)

在处理集合的representativeItem时似乎存在错误。例如, Jazz Jazz-Fusion Jazz-Rock 等类型在查询时都会以 Jazz 的形式返回类型标题属性的representativeItem。要解决此问题,请获取firstObject数组的items以获取正确的信息:

MPMediaQuery *query = [MPMediaQuery genresQuery];
for (MPMediaItemCollection *item in [query collections]) {
    NSLog(@"%@", [[item.items firstObject] valueForProperty: MPMediaItemPropertyGenrePersistentID]);
    NSLog(@"%@", [[item.items firstObject] valueForProperty: MPMediaItemPropertyGenre]);
}