MPMedia查询过滤播放列表以查找不起作用的歌曲

时间:2014-07-24 22:04:39

标签: ios objective-c mpmediaquery

我试图在iOS上检索播放列表,但删除所有非音乐内容。这是原始代码,它返回了一些视频项目。

MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:_playlistIdentifier forProperty:MPMediaPlaylistPropertyPersistentID]];
[query setGroupingType:MPMediaGroupingPlaylist];

所以我把它改成了:

MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:_playlistIdentifier forProperty:MPMediaPlaylistPropertyPersistentID]];
[query addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInteger:MPMediaTypeMusic] forProperty:MPMediaItemPropertyMediaType]];
[query setGroupingType:MPMediaGroupingPlaylist];

然而,没有运气 - 我们的一位客户在播放列表中有视频(在iCloud上无法在本地播放)仍在抱怨他可以看到视频。是否有某些原因导致此查询未删除这些非音乐文件?

1 个答案:

答案 0 :(得分:1)

正如您在问题中提到的那样,设备上没有但存储在iCloud上的视频会显示在播放列表中。因此,排除icloud项目可能会解决问题。所以添加过滤器

[query addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithBool:NO] forProperty:MPMediaItemPropertyIsCloudItem]];

它将排除目前无法使用的iCloud项目。希望它可以正常工作。