2

我需要显示设备上当前所有播放列表的列表。问题是,在打开 iTunes Match 的设备上,任何数量的播放列表都可能在手机上保存零个项目。由于(据我所知)没有可靠的方法来触发MPMediaItem download您使用的AVAudioPlayer,我想过滤掉任何没有任何本地条目的播放列表。现在我可以让它循环播放单个播放列表并删除没有assetURL. 我尝试过滤整个音乐库以获取播放列表

MPMediaQuery *songsQuery = [MPMediaQuery songsQuery];
[songsQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithBool:NO] forProperty:MPMediaItemPropertyIsCloudItem]];
songsQuery.groupingType = MPMediaGroupingPlaylist;

但是,当我循环浏览“收藏”数组时,它似乎根本没有过滤掉任何歌曲。我会尝试按歌曲是否有 过滤assetURL,但当然你不能过滤。

有没有人有一个相当快速的方法来完成这个?(或者,有没有人想出一种体面的方法来触发MPMediaItem download,因为 Apple 没有关于处理 iTunes Match 的开发人员文档?)

4

1 回答 1

2

过滤器MPMediaItemPropertyIsCloudItem适用于MPMediaItems 而不是MPMediaItemCollections。因此该collections数组不会过滤任何云项,因为它是一个MPMediaItemCollections 数组。但是该items数组将过滤云项,因为它是一个 s 数组MPMediaItem

从 iOS 6 开始,没有公共 API 可以通过第三方应用程序触发云项目的下载。用户必须切换到内置的音乐应用程序才能执行此操作。

于 2013-01-28T21:34:35.660 回答