首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从MPMediaItemCollection获取艺术品

如何从MPMediaItemCollection获取艺术品
EN

Stack Overflow用户
提问于 2016-09-02 04:58:37
回答 1查看 1.2K关注 0票数 3

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

代码语言:javascript
复制
 playlistMediaItemCollections = MPMediaQuery.playlistsQuery().collections ?? []
 let artworks = playlistMediaItemCollections.map { $0.valueForKey(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork }

但它会导致错误

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

有人知道我怎样才能拿到播放列表的艺术品吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-02 05:09:33

您应该使用valueForProperty来代替:

代码语言:javascript
复制
$0.valueForProperty(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork

但是,我认为与歌曲或专辑不同的是,MediaPlayer API没有提供这样的属性键来检索播放列表的艺术品。您可以签出可以与几个类一起使用的可能的MPMediaPlaylist:

代码语言:javascript
复制
let MPMediaPlaylistPropertyPersistentID: String
let MPMediaPlaylistPropertyName: String
let MPMediaPlaylistPropertyPlaylistAttributes: String
let MPMediaPlaylistPropertySeedItems: String

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

我认为如果播放列表没有艺术品图像,音乐应用程序也会做类似的事情。

代码语言:javascript
复制
let playlist = MPMediaQuery.playlistsQuery().collections?.first
let artworks = playlist?.items.map { $0.valueForProperty(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39284573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档