【问题标题】:iPhone get all albums/artistsiPhone 获取所有专辑/艺术家
【发布时间】:2010-10-15 09:26:41
【问题描述】:

你们有没有关于如何从 iPod 媒体库中检索所有音乐专辑或艺术家的示例代码(或链接)?

提前致谢!

【问题讨论】:

    标签: iphone ipod


    【解决方案1】:

    使用 MPMediaQuery:

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

    allItems 数组现在包含 MPMediaItemCollections,分组由专辑完成。现在您可以遍历数组。

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

    【讨论】:

      【解决方案2】:

      感谢您的回答,这是打印出专辑和艺术家的工作示例代码,以防有人需要:

      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]);
      

      【讨论】:

        【解决方案3】:

        给你。您可以获取专辑及其歌曲。

            /// 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)")
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-01
          • 1970-01-01
          • 2012-02-15
          相关资源
          最近更新 更多