に関してMPMediaItem
、複数のアイテム/メディア アイテム コレクション内のアイテムのプロパティを取得する方法はありvalueForProperty:
ますか?各アイテムを個別に呼び出すよりも効率的ですか?
は承知してenumerateValuesForProperties:usingBlock:
いますが、これにより、1 つのメディア アイテムの複数のプロパティをバッチで取得できます。複数のメディア アイテムの 1 つのプロパティに興味があります。
に関してMPMediaItem
、複数のアイテム/メディア アイテム コレクション内のアイテムのプロパティを取得する方法はありvalueForProperty:
ますか?各アイテムを個別に呼び出すよりも効率的ですか?
は承知してenumerateValuesForProperties:usingBlock:
いますが、これにより、1 つのメディア アイテムの複数のプロパティをバッチで取得できます。複数のメディア アイテムの 1 つのプロパティに興味があります。
残念ながら、実際には一度に1つずつ実行する必要がありますが、これを実行するための実用的な方法がいくつかあります。たとえば、値を配列にロードする場合は、次のfor-inループを使用できます。
for (MPMediaItem *item in myCollection.items) {
[someMutableArray addObject:[item valueForProperty:MPMediaItemPropertyTitle]];
}
または、ブロック列挙を使用する場合は、次のようになります。
[myCollection.items enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
[someMutableArray addObject:[(MPMediaItem *)[myCollection.items objectAtIndex:idx] valueForProperty:MPMediaItemPropertyTitle]];
}];