【问题标题】:How to get artwork from MPMediaItemCollection如何从 MPMediaItemCollection 获取艺术品
【发布时间】:2017-01-10 02:35:30
【问题描述】:

我的目标是获取 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.'

有人知道我如何获得播放列表的插图吗?谢谢

【问题讨论】:

  • @ozgur 这很奇怪,因为您实际上可以选择一张图片作为播放列表的封面。
  • 你是在模拟器还是真机上测试?
  • @ozgur 在真实设备上。我创建了一些带有封面的播放列表来测试它。
  • @ozgur 是的,我想是的。非常感谢

标签: ios swift mpmediaquery mpmediaitemcollection mpmedialibrary


【解决方案1】:

您应该改用valueForProperty

$0.valueForProperty(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork

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

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

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

如果播放列表没有艺术作品图像,我认为音乐应用会执行与以下相同的操作。

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

【讨论】:

    猜你喜欢
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多