gpt4 book ai didi

swift - 如何在 MPMediaItem 中正确添加音乐编辑的谓词

转载 作者:行者123 更新时间:2023-12-04 13:42:35 25 4
gpt4 key购买 nike

在我的应用程序中,我正在检查当前播放的歌曲是否是专辑的一部分。我能够做到这一点,但我发现如果专辑是汇编的一部分,我的代码将无法按预期工作。

我想要做的是,如果当前播放的歌曲是专辑的一部分,则启用按钮,如果不是,则不启用按钮。我的 iTunes 上有一个专辑,其中所有歌曲都具有完全相同的专辑名称,但在应用程序上该按钮未启用,但 iTunes 将专辑标记为合辑。

我用来查询的代码是

let albumPredicate = MPMediaPropertyPredicate(value: item.albumTitle, forProperty: MPMediaItemPropertyAlbumTitle)

我试过了
let compilationPredicate = MPMediaPropertyPredicate(value: item.isCompilation, forProperty: MPMediaItemPropertyIsCompilation)

然后

如果 item.isCompilation == true以确定我是否会将此谓词添加到过滤器集中。

我还需要小心,我不会意外地禁用按钮,因为当前播放的歌曲不是合辑的一部分,因为歌曲可以是专辑的一部分,但不是合辑,也可以是专辑和合辑。
func getSongsWithCurrentAlbumFor(item: MPMediaItem) -> MPMediaQuery {

let artistPredicateWithin = MPMediaPropertyPredicate(value: item.artist, forProperty: MPMediaItemPropertyArtist, comparisonType: .contains)
let albumPredicate = MPMediaPropertyPredicate(value: item.albumTitle, forProperty: MPMediaItemPropertyAlbumTitle)

let compilationPredicate = MPMediaPropertyPredicate(value: item.isCompilation, forProperty: MPMediaItemPropertyIsCompilation)

var isComp: String
var myFilterSet: Set<MPMediaPropertyPredicate>!

if item.isCompilation == true {
myFilterSet = [artistPredicateWithin, albumPredicate, compilationPredicate]
isComp = "true"
} else {
myFilterSet = [artistPredicateWithin, albumPredicate]
isComp = "false"
}

print(isComp)

var query = MPMediaQuery(filterPredicates: nil)
query = MPMediaQuery(filterPredicates: myFilterSet)
query.addFilterPredicate(albumPredicate)
albumQuery = query
return albumQuery
}

我在代码中做错了什么?

最佳答案

MPMediaItemPropertyIsCompilation 属性的文档说明它应该包含在 NSNumber 值中。

关于swift - 如何在 MPMediaItem 中正确添加音乐编辑的谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58550630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com