Как получить произведение искусства из 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 }