iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
iPodアプリケーションのOn-The-GoインタフェースのArtistsでは、まず、Artistsのリストが表示され、あるArtistを選択するとAlbumsリストが表示され、あるAlbumを選択するのSongsリストが表示されるが、その為で情報を取得する方法を試行錯誤してみたので、それを紹介する。
- (void)viewDidLoad
{
[super viewDidLoad];
/* Artists一覧の取得 */
MPMediaQuery *artistsQuery = [MPMediaQuery artistsQuery];
NSArray *artistsArray = [artistsQuery collections];
for (MPMediaItemCollection *mediaItemCollection in artistsArray) {
MPMediaItem *mediaItem = [mediaItemCollection representativeItem];
NSURL *artistName = (NSURL*)[mediaItem valueForProperty:MPMediaItemPropertyArtist];
NSLog(@"artist:%@", artistName);
/* Albums一覧の取得 */
MPMediaQuery *albumsQuery = [[MPMediaQuery alloc] init];
[albumsQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:artistName
forProperty:MPMediaItemPropertyArtist]];
[albumsQuery setGroupingType:MPMediaGroupingAlbum];
NSArray *albums = [albumsQuery collections];
for (MPMediaItemCollection *album in albums) {
MPMediaItem *representativeItem = [album representativeItem];
NSString *albumTitle = [representativeItem valueForProperty:MPMediaItemPropertyAlbumTitle];
NSLog(@" album:%@", albumTitle);
/* Songs一覧の取得 */
NSArray *songs = [album items];
for (MPMediaItem *song in songs) {
NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
NSLog(@" song:%@", songTitle);
}
}
}
}
はじめArtists一覧は木構造になっていて、Albums、Songsと辿れると予想していたのだが、そうではなくて、得られた情報から検索条件を作って取得する事になる。