我正在编写可播放音乐的小应用程序。要获取所有歌曲我使用下面的代码
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
项目中的项目数量多于实际数量。有谁知道为什么会出现这种情况?
答案 0 :(得分:0)
正如您在评论中所建议的那样,默认情况下包含的iCloud媒体项可能会有所不同。
尝试将此过滤器谓词添加到您的查询中,以便不包含iCloud项目:
query.addFilterPredicate(MPMediaPropertyPredicate(value: false, forProperty: MPMediaItemPropertyIsCloudItem))