代码之家  ›  专栏  ›  技术社区  ›  CVertex

如何清除MPMusicPlayerController的队列?

  •  4
  • CVertex  · 技术社区  · 15 年前

    我正在尝试复制iPod应用程序的清除队列功能,但是我无法创建空的mpmediaitemcollection来调用setqueuewithitemcollection:

    例如

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

    其中,MusicPlayer是MPMusicPlayerController。

    引发异常:

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

    是否有一种方法可以清除MPMusicPlayerController队列以避免此问题?

    非常感谢您的帮助, 个人简历

    1 回复  |  直到 14 年前
        1
  •  8
  •   hktegner    14 年前

    我不知道你是否已经设法克服了你的问题,但这里有一个解决方法,似乎对我有用。

    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无效,然后为了更好的测量,它会让玩家停止。

    希望有帮助。