如何从MPMediaItemCollection获取艺术作品

时间:2016-09-02 04:58:37

标签: ios swift mpmediaquery mpmediaitemcollection mpmedialibrary

我的目标是获取iPod库中播放列表的封面图片。我做了类似

的事情
 playlistMediaItemCollections = MPMediaQuery.playlistsQuery().collections ?? []
 let artworks = playlistMediaItemCollections.map { $0.valueForKey(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork }

但它会导致错误

 Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MPConcreteMediaPlaylist 0x1468b1eb0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key artwork.'

任何人都知道如何获取播放列表作品?感谢

1 个答案:

答案 0 :(得分:3)

您应该使用valueForProperty代替:

$0.valueForProperty(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork

但是,我认为与歌曲或专辑不同,MediaPlayer API不提供此类属性键,可让您检索播放列表的图稿。您可以查看可与MPMediaPlaylist类一起使用的ones

let MPMediaPlaylistPropertyPersistentID: String
let MPMediaPlaylistPropertyName: String
let MPMediaPlaylistPropertyPlaylistAttributes: String
let MPMediaPlaylistPropertySeedItems: String

另一种选择是,您可以在播放列表中获取歌曲的艺术作品,并显示其中一个或组合它们以创建播放列表的新作品。

我认为如果播放列表没有艺术作品图片,音乐应用会像下面那样做。

enter image description here

let playlist = MPMediaQuery.playlistsQuery().collections?.first
let artworks = playlist?.items.map { $0.valueForProperty(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork }