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を使用すると、プレイリストのアートワークを取得でき、そのようなプロパティキーを提供していないと思います。

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

1つの選択肢は、あなたは、プレイリストの曲のアートワークを取得し、それらのいずれかを表示またはのための新しいアートワークを作成するためにそれらを組み合わせることができ、次のとおりです。あなたはMPMediaPlaylistクラスで使用できる可能性onesをチェックアウトすることができますプレイリスト

プレイリストにアートワークイメージがない場合、音楽アプリは以下のように同じことをすると思います。

enter image description here

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

私はそのエラーを修正します。しかし、それは常にnilを返す – bunnyshell

関連する問題