如何从 MPMediaItemCollection 获取艺术品
How to get artwork from MPMediaItemCollection
我的目标是获取 iPod 库中播放列表的封面图片。我做了类似
的事情
playlistMediaItemCollections = MPMediaQuery.playlistsQuery().collections ?? []
let artworks = playlistMediaItemCollections.map { [=10=].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.'
有人知道我怎样才能得到播放列表的插图吗?谢谢
您应该改用 valueForProperty
:
[=10=].valueForProperty(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork
但是,我认为与歌曲或专辑不同,MediaPlayer API 不提供这样的 属性 键让您检索播放列表的插图。您可以查看可能与 MPMediaPlaylist class:
一起使用的 ones
let MPMediaPlaylistPropertyPersistentID: String
let MPMediaPlaylistPropertyName: String
let MPMediaPlaylistPropertyPlaylistAttributes: String
let MPMediaPlaylistPropertySeedItems: String
另一种方法是,您可以获取播放列表中歌曲的艺术作品,并显示其中之一或将它们组合起来为播放列表创建新的艺术作品。
如果播放列表没有艺术作品图片,我认为音乐应用程序会像下面那样做同样的事情。
let playlist = MPMediaQuery.playlistsQuery().collections?.first
let artworks = playlist?.items.map { [=12=].valueForProperty(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork }
我的目标是获取 iPod 库中播放列表的封面图片。我做了类似
的事情 playlistMediaItemCollections = MPMediaQuery.playlistsQuery().collections ?? []
let artworks = playlistMediaItemCollections.map { [=10=].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.'
有人知道我怎样才能得到播放列表的插图吗?谢谢
您应该改用 valueForProperty
:
[=10=].valueForProperty(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork
但是,我认为与歌曲或专辑不同,MediaPlayer API 不提供这样的 属性 键让您检索播放列表的插图。您可以查看可能与 MPMediaPlaylist class:
一起使用的 oneslet MPMediaPlaylistPropertyPersistentID: String
let MPMediaPlaylistPropertyName: String
let MPMediaPlaylistPropertyPlaylistAttributes: String
let MPMediaPlaylistPropertySeedItems: String
另一种方法是,您可以获取播放列表中歌曲的艺术作品,并显示其中之一或将它们组合起来为播放列表创建新的艺术作品。
如果播放列表没有艺术作品图片,我认为音乐应用程序会像下面那样做同样的事情。
let playlist = MPMediaQuery.playlistsQuery().collections?.first
let artworks = playlist?.items.map { [=12=].valueForProperty(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork }