2

我正在编写可以播放音乐的小应用程序。要获取所有歌曲,我使用下面的代码

 var songsArray: [MPMediaItem] = [MPMediaItem]()
 var mediaQuery = MPMediaQuery()
 songsArray = MPMediaQuery.songsQuery().items as [MPMediaItem]

 for songItem in songsArray {            
     var song: myMusicItem? = myMusicItem(songTitle: songItem.title, songAlbum: songItem.albumTitle, songArtist: songItem.albumArtist, songGenre: songItem.genre)

     retArray.append(song!)
 }

 println(String(format:"Number of songs:\t%i", retArray.count))

问题是retArray我的图书馆里有比实际更多的项目。有谁知道为什么会发生这种情况?

4

1 回答 1

0

正如您在评论中所建议的那样,默认情况下包含的 iCloud 媒体项目可能会有所不同。

尝试将此过滤谓词添加到您的查询中以不包括 iCloud 项目:

query.addFilterPredicate(MPMediaPropertyPredicate(value: false, forProperty: MPMediaItemPropertyIsCloudItem))
于 2018-04-15T11:28:35.933 回答