Как получить произведение искусства из MPMediaItemCollection

Моя цель - получить обложку для плейлистов в библиотеке 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 ответ

Решение

Вы должны использовать valueForProperty вместо:

$0.valueForProperty(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork

Тем не менее, я думаю, что в отличие от песен или альбомов, MediaPlayer API не предоставляет такой ключ свойства, который позволяет получить обложку плейлиста. Вы можете проверить возможные из них, которые можно использовать с классом MPMediaPlaylist:

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 }
Другие вопросы по тегам