0

次のコードを使用して、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]);
    }

問題は、このコードが正しいジャンルの数を取得するが、正しい名前を取得しないことです。一部の名前と ID は 2 回表示され、一部は表示されません。

このコードは、iOS 6.1.3 を搭載した iPod で正常に動作します。

私にヒントをくれる人はいますか?

ありがとう、ステファン

4

1 に答える 1

1

representativeItemコレクションの を扱うときにバグがあるようです。たとえば、ジャンル タイトル プロパティをクエリすると、 JazzJazz-Fusion、およびJazz-Rockのジャンルはすべて Jazz として返されます。representativeItem回避策としてfirstObjectitems配列の を取得して正しい情報を取得します。

MPMediaQuery *query = [MPMediaQuery genresQuery];
for (MPMediaItemCollection *item in [query collections]) {
    NSLog(@"%@", [[item.items firstObject] valueForProperty: MPMediaItemPropertyGenrePersistentID]);
    NSLog(@"%@", [[item.items firstObject] valueForProperty: MPMediaItemPropertyGenre]);
}
于 2014-01-05T19:27:03.550 に答える