3

Моя цель - получить обложку для плейлистов в библиотеке iPod. И я сделал что-то вродеКак получить работу с MPMediaItemCollection

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.' 

Каждый знает, как я могу получить список воспроизведения произведения искусства? Благодаря

+0

@ozgur Это странно, так как вы можете выбрать изображение в качестве обложки воспроизведения. – bunnyshell

+0

Вы испытываете на тренажере или на реальном устройстве? – ozgur

+0

@ozgur на реальном устройстве. Я создал некоторые плейлисты с обложками, чтобы проверить это. – bunnyshell

ответ

3

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

$0.valueForProperty(MPMediaItemPropertyArtwork) as? MPMediaItemArtwork 

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

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

одна альтернатива, вы можете получить искусство песен в списке воспроизведения, и показать, либо один из них или объединить их, чтобы создать новую обложку плейлист.

Я думаю, что приложение для музыки делает то же самое, что и ниже, если в плейлисте нет изображения обложки.

enter image description here

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

Я исправляю эту ошибку. Но он всегда возвращает ноль – bunnyshell