2010-06-17 2 views
4

Я пытаюсь повторить четкую функциональность очереди приложения IPod, однако я не могу создать пустой MPMediaItemCollection, с помощью которого называть setQueueWithItemCollection:Как очистить очередь MPMusicPlayerController?

например

[self.musicPlayer setQueueWithItemCollection:[MPMediaItemCollection collectionWithItems:[NSArray array]]]; 

где musicPlayer является MPMusicPlayerController.

бросает исключение:

*** Terminating app due to uncaught exception 'MPMediaItemCollectionInitException', reason: 'items array must not be empty' 

Есть ли способ, чтобы очистить очередь MPMusicPLayerController, что позволяет избежать этой проблемы?

Любая помощь очень ценится, CV

ответ

8

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

MPMediaPropertyPredicate *predicate = 
    [MPMediaPropertyPredicate predicateWithValue: @"Non_Existant_Song_Name" 
            forProperty: MPMediaItemPropertyTitle]; 
MPMediaQuery *q = [[MPMediaQuery alloc] init]; 
[q addFilterPredicate: predicate]; 
[self.player.controller setQueueWithQuery:q]; 
self.player.controller.nowPlayingItem = nil; 
[self.player.controller stop]; 

Это в основном устанавливает очередь воспроизведения с запросом, в котором вы уверены, что никогда не появится ни одна песня. В идеале это запрос, который очень быстро выполняется. И затем он аннулирует nowPlayingItem, а затем для хорошей меры говорит игроку остановиться.

Надеюсь, что это поможет.

+0

Блестящий, работает как шарм. –

Смежные вопросы