1

我正在尝试使用applicationQueuePlayerandperform方法编辑我的音乐播放器的队列(详情请点击此处)。但是,每当我应用任何数组函数(mapfilter)时,都需要几秒钟才能完成,这会导致(我认为)数据竞争和崩溃,例如,当用户立即删除两个音轨时。

    var musicPlayerController = MPMusicPlayerController.applicationQueuePlayer

    self.musicPlayerController.perform { (currentQueue) in
        let items = currentQueue.items
        let itemsToRemove = items.filter { $0.artist == "Some artist" } // this takes multiple seconds
        if let item = itemsToRemove.first {
            currentQueue.remove(item)
        }
    } completionHandler: { (newQueue, error) in
        if let e = error {
            print(e)
        } else {
            tracks = items.map { Track(item: $0) } // this takes multiple seconds
        }
    }

当我通过一个MPMediaItem数组时,问题就出现了。我认为这不是 MPMediaItem 类的问题,因为我可以map在应用程序的其他地方完成 [MPMediaItem] 的一个,例如从播放列表中获取项目时(与队列项目类似大小的数组) .

该问题仅在MPMediaItemsMPMusicPlayerControllerMutableQueueand中获取时才会发生MPMusicPlayerControllerQueue

这只是 MusicKit API 的错误吗?

4

0 回答 0