问题描述
我正在尝试使用 applicationQueuePlayer
和 perform
方法(详细信息 here)编辑我的音乐播放器的队列。但是,每当我应用任何数组函数(map
、filter
等)时,都需要很多秒才能完成,导致(我认为)数据竞争和崩溃,例如,当用户删除两个紧随其后。
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
取自 MPMusicPlayerControllerMutableQueue
和 MPMusicPlayerControllerQueue
时发生
这只是 MusicKit API 的错误吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)