<分区>
我正在用媒体播放器进行第二次重写。第一个在 Objective C 中,效果很好。我在 swift 中构建的第二个主要是为了制作更高效的音乐播放器并加快使用新语言的速度。
在我的媒体选择器中,我试图在点击专辑后获取专辑歌曲。我可以按艺术家过滤,但是当我应用专辑过滤器时,我得到一个空表。这是代码:
// Get the representative media item
var itemCollection: MPMediaItemCollection =
items!.objectAtIndex(itemRow) as MPMediaItemCollection
var mediaItem: MPMediaItem = itemCollection.representativeItem
//Build the query with predicate filters
var albumPredicate: MPMediaPropertyPredicate =
MPMediaPropertyPredicate(value: mediaItem.albumTitle,
forProperty: MPMediaItemPropertyAlbumTitle)
var artistPredicate: MPMediaPropertyPredicate =
MPMediaPropertyPredicate(value: mediaItem.artist,
forProperty: MPMediaItemPropertyAlbumArtist)
var noCloudPredicate: MPMediaPropertyPredicate =
MPMediaPropertyPredicate(value: NSNumber.numberWithBool(false),
forProperty: MPMediaItemPropertyIsCloudItem)
var query: MPMediaQuery = MPMediaQuery.songsQuery()
query.addFilterPredicate(noCloudPredicate)
query.addFilterPredicate(artistPredicate)
query.addFilterPredicate(albumPredicate)
如果我注释掉 albumPredicate
,我将得到所选艺术家下所有歌曲的正确列表,这意味着我的 Storyboard连接正确。此外,mediaItem.albumTitle
会正确返回所选的专辑标题。