我试图在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上无法在本地播放)仍在抱怨他可以看到视频。是否有某些原因导致此查询未删除这些非音乐文件?
答案 0 :(得分:1)
正如您在问题中提到的那样,设备上没有但存储在iCloud上的视频会显示在播放列表中。因此,排除icloud项目可能会解决问题。所以添加过滤器
[query addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithBool:NO] forProperty:MPMediaItemPropertyIsCloudItem]];
它将排除目前无法使用的iCloud项目。希望它可以正常工作。