MPMediaItem 的数组函数非常慢

问题描述

我正在尝试使用 applicationQueuePlayerperform 方法(详细信息 here)编辑我的音乐播放器的队列。但是,每当我应用任何数组函数(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 类的问题,因为我能够在应用程序的其他地方完成 [MPMediaItem] 的 map,例如从播放列表中获取项目时(与队列项目大小相似的数组)。

问题仅在 MPMediaItems 取自 MPMusicPlayerControllerMutableQueueMPMusicPlayerControllerQueue 时发生

这只是 MusicKit API 的错误吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...