2010-10-15 11 views
11

प्राप्त करता है क्या आपके पास किसी भी आईपॉड मीडिया लाइब्रेरी से सभी संगीत एल्बम या कलाकार को पुनर्प्राप्त करने के लिए उदाहरण कोड (या इसके लिए एक लिंक) है?आईफोन सभी एल्बम/कलाकार

अग्रिम धन्यवाद!

उत्तर

21

एक MPMediaQuery उपयोग:

MPMediaQuery *allAlbumsQuery = [MPMediaQuery albumsQuery]; 
NSArray *allAlbumsArray = [allAlbumsQuery collections]; 

allItems सरणी अब MPMediaItemCollections शामिल करता है, समूहीकरण एल्बम द्वारा किया जाता है। अब आप सरणी के माध्यम से चल सकते हैं।

for (MPMediaItemCollection *collection in allAlbumsArray) { 
    MPMediaItem *item = [collection representativeItem]; 
} 
4

जवाब के लिए धन्यवाद, यहाँ काम कर रहा है नमूना कोड उस मामले में किसी को एल्बम और कलाकारों बाहर प्रिंट इसकी आवश्यकता है:

NSMutableString *outText = [[NSMutableString alloc] initWithString:@"Albums:"]; 
[outText appendFormat:@"\r\n count:%i",[[[MPMediaQuery albumsQuery] collections] count]]; 
for (MPMediaItemCollection *collection in [[MPMediaQuery albumsQuery] collections]) { 
     [outText appendFormat:@"\r\n -%@",[[collection representativeItem] valueForProperty:MPMediaItemPropertyAlbumTitle]]; 
} 

[outText appendString:@"\r\n\r\n Artist:"]; 

for (MPMediaItemCollection *collection in [[MPMediaQuery artistsQuery] collections]) { 
     [outText appendFormat:@"\r\n -%@",[[collection representativeItem] valueForProperty:MPMediaItemPropertyArtist]]; 
} 
NSLog(@"%@",[outText autorelease]); 
0

ये रहा। आप एल्बम और उनके गाने प्राप्त कर सकते हैं।

/// Get all albums and their songs 
/// 
func getAllAlbums() { 
    let query: MPMediaQuery = MPMediaQuery.albums() 
    let allAlbums = query.collections 

    allAlbumItems?.removeAll() 

    guard allAlbums != nil else { 
     return 
    } 

    for collection in allAlbums! { 
     let item: MPMediaItem? = collection.representativeItem 

     let albumName = item?.value(forKey: MPMediaItemPropertyAlbumTitle) as? String ?? "<Unknown>" 
     let albumId = item!.value(forProperty: MPMediaItemPropertyAlbumPersistentID) as! NSNumber 
     let artistName = item?.value(forKey: MPMediaItemPropertyArtist) as? String ?? "<Unknown>" 

     let album = Album() 
     album.name = albumName 
     album.artistName = artistName 
     album.albumId = String(describing: albumId) 
     print("Album name: \(albumName)") 

     // Get all songs in this album 
     let mediaQuery = MPMediaQuery.songs() 
     let predicate = MPMediaPropertyPredicate.init(value: albumId, forProperty: MPMediaItemPropertyAlbumPersistentID) 
     mediaQuery.addFilterPredicate(predicate) 
     let song = mediaQuery.items 

     if let allSongs = song { 
      var index = 0 

      for item in allSongs { 
       let pathURL: URL? = item.value(forProperty: MPMediaItemPropertyAssetURL) as? URL 
       if pathURL == nil { 
        print("@Warning!!! Track : \(item) is not playable.") 
       } else { 
        let trackInfo = SongItem() 
        trackInfo.index = index 
        trackInfo.mediaItem = item 

        let title = item.value(forProperty: MPMediaItemPropertyTitle) as? String ?? "<Unknown>" 
        let artistName = item.value(forProperty: MPMediaItemPropertyArtist) as? String ?? "<Unknown>" 
        trackInfo.songName = title 
        trackInfo.artistName = artistName 

        trackInfo.isSelected = false 
        trackInfo.songURL = item.value(forProperty: MPMediaItemPropertyAssetURL) as? URL 
        album.songs?.append(trackInfo) 
        index += 1 
       } 
      } 

     } 

     // Finally add the album object to albums array 
     allAlbumItems?.append(album) 

    } 


    print("Total Album count: \(allAlbumItems?.count)") 

}