noitatocx0の技術メモ置き場

コーディング関連で解決に時間がかかったものを適当に書く

MPMusicPlayerControllerのshuffleModeはsetQueueされていないと変更できない

setQueueメソッドで再生する曲一覧を設定する前にshuffleModeやrepeatModeを変更しようとすると以下のようなエラーがログに出力される。

[SDKPlayback] -[MPMusicPlayerController setShuffleMode:3] completed error: Error Domain=MPCPlayerRequestErrorDomain Code=1 "No commands provided." UserInfo={NSDebugDescription=No commands provided.}

 

どうもMPMusicPlayerControllerのshuffleModeやrepeatModeといったプロパティはMPMusicPlayerController自身のフラグというよりも、MPMusicPlayerControllerが持つキューに紐付いているっぽい。

 

まあ、確かにキューの中の曲一覧に対してシャッフルやリピートをすると考えれば、自然ではあるかも。

 

というわけでviewDidLoad内で事前にsetQueueすることで解決した。

 

   override func viewDidLoad() {

        super.viewDidLoad()

        

 

     --中略--       

        //再生キューの設定

        let songs = targetAlbum!.items

        musicPlayer.setQueue(with: MPMediaItemCollection(items: songs))

        musicPlayer.nowPlayingItem = songs[0]

        

    }

 

 

ついでに画面表示してすぐに再生ボタン押された時に、曲が再生されなかったのも解決されたし万事OK。

VS codeでデバッグができないのが解決した話

ruby on railsデバッグVS codeでできると聞いたので導入してみたけどものすごい苦労した話。

 

結論から言うとGemfileにruby-debug-ideとdebaseのバージョンを以下のように2019/4/4現在最新のバージョンで指定してあげるとうまく行った。

rubyとかrailsとかのバージョンとの兼ね合いがあるのかな?

 

gem 'ruby-debug-ide', '0.7.0.beta7'
gem 'debase', '0.2.3.beta5'

 

※補足 自環境について

ruby 2.5.1

Rails 5.2.3

 

 

 なんとなくbeta版って避けたくなるけど、これからはとりあえず詰まったら最新版を試して見るようにしよう。