質問: 現在、music playerの開発に取り組んでいるのですが スワイプすると現在再生している曲が入っているアルバムの次の曲を再生するような仕組みを 実装しようとしています。 mediapicker(_ didPickMediaItems) で曲を選択し、再生するようにしているのですが 引数のmediaItemCollectionには選択した一曲だけの情報しか入っていないためか skipToNextItem()を使っても上手く動きません。 mediapicker(_,didPickMediaItems)で曲を選択した後に その曲のアルバム情報を取得し、その次の曲にスキップするにはどのような方法があるでしょうか。
回答: MPMediaPickerControllerはあくまで **曲** を選ぶためのUIとなっています。 `allowsPickingMultipleItems` が `false` の場合、 `didPickMediaItems` で渡される MPMediaItemCollection の中身は **1曲のみ** となります。 その mediaItemCollection を再生しても当然、その1曲のみが再生され、次の曲がないのでスキップすることはできません。 曲ではなく、アルバムを再生したいのならば、選択された MPMediaItem の `albumPersistentID` を条件に、 MPMediaQuery を使って**アルバムに含まれるすべての曲**を選択して再生すればよいでしょう。そうすれば(次の曲があれば)スキップもできるはずです。 **追記** MPMediaQuery.albums() に MPMediaItemPropertyAlbumPersistentID をキーに指定した MPMediaPropertyPredicate を条件に追加して検索してみてください。 参考) Using Filters to Create Specialized Queries