iPhone获得所有专辑/艺术家

iPhone获得所有专辑/艺术家,iphone,ipod,Iphone,Ipod,你们中有没有人有如何从iPod媒体库中检索所有音乐专辑或艺术家的示例代码(或链接) 提前谢谢 使用MPMediaQuery: MPMediaQuery *allAlbumsQuery = [MPMediaQuery albumsQuery]; NSArray *allAlbumsArray = [allAlbumsQuery collections]; allItems数组现在包含MPMediaItemCollections,分组由album完成。现在您可以浏览阵列了 for (MPMedia

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

提前谢谢

使用MPMediaQuery:

MPMediaQuery *allAlbumsQuery = [MPMediaQuery albumsQuery];
NSArray *allAlbumsArray = [allAlbumsQuery collections];
allItems数组现在包含MPMediaItemCollections,分组由album完成。现在您可以浏览阵列了

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

感谢您的回答,以下是工作示例代码,用于打印相册和艺术家,以备有人需要:

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

给你。你可以得到专辑和他们的歌曲

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

}
///获取所有专辑及其歌曲
///
func getAllAlbums(){
let query:MPMediaQuery=MPMediaQuery.albums()
让allAlbums=query.collections
allAlbumItems?.removeAll()
守卫所有人!=没有其他人{
返回
}
在所有的收集{
let项:MPMediaItem?=collection.representativeItem
将albumName=item?值(forKey:MPMediaItemPropertyAlbumTitle)设为?字符串??“”
将albumId=item!。值(forProperty:MPMediaItemPropertyAlbumPersistentID)设为!NSNumber
将artistName=item?值(forKey:MPMediaItemPropertyAttribute)设为?字符串??“”
让相册=相册()
album.name=albumName
album.artistName=艺人姓名
album.albumId=字符串(描述:albumId)
打印(“相册名称:\(相册名称)”)
//获取此专辑中的所有歌曲
让mediaQuery=MPMediaQuery.songs()
let predicate=MPMediaPropertyPredicate.init(值:albumId,forProperty:MPMediaItemPropertyAlbumPersistentID)
mediaQuery.addFilterPredicate(谓词)
让song=mediaQuery.items
如果让所有歌曲=歌曲{
var指数=0
对于所有歌曲中的项目{
将pathURL:URL?=item.value(forProperty:MPMediaItemPropertyAsetUrl)设为?URL
如果路径URL==nil{
打印(“@警告!!!曲目:\(项目)不可播放。”)
}否则{
让trackInfo=SongItem()
trackInfo.index=索引
trackInfo.mediaItem=项目
将title=item.value(forProperty:MPMediaItemPropertyTitle)设为?字符串??“”
将artistName=item.value(forProperty:MPMediaItemPropertyArtist)设为?字符串??“”
trackInfo.songName=标题
trackInfo.artistName=artistName
trackInfo.isSelected=false
trackInfo.songURL=item.value(forProperty:MPMediaItemPropertyAsetUrl)作为?URL
唱片集.歌曲?.append(trackInfo)
指数+=1
}
}
}
//最后将album对象添加到albums数组
allAlbumItems?.append(相册)
}
打印(“专辑总数:\(AllalBumiItems?.count)”)
}