MPMediaPropertyPredicate - 按歌曲持续时间过滤 MPMediaQuery

MPMediaPropertyPredicate - filter MPMediaQuery by songs duration

我正在像这样从用户的音乐库中获取音乐曲目:

    let query = MPMediaQuery.songs()
    let predicate = MPMediaPropertyPredicate(value: false, forProperty: MPMediaItemPropertyIsCloudItem)
    
    query.addFilterPredicate(predicate)
    
    if let fetchedSongs = query.items {
       // Do something with tracks
    }

不过,我不需要超过 5 分钟的歌曲。我尝试添加一个新的谓词 MPMediaPropertyPredicate 来过滤掉所有超过 5 分钟的曲目,但没有成功 - 我不确定在 value 参数中使用什么以及我是否可以使用 "duration < 300" 在一个简单的 NSPredicate.

只需自己查询和筛选结果即可。这是我自己的应用程序的代码,可以获取所有非常短的歌曲:

let query = MPMediaQuery.songs()
// always need to filter out songs that aren't present
let isPresent = MPMediaPropertyPredicate(value:false,
                                         forProperty:MPMediaItemPropertyIsCloudItem,
                                         comparisonType:.equalTo)
query.addFilterPredicate(isPresent)
guard let items = query.items else {return} //

let shorties = items.filter { //
    let dur = [=10=].playbackDuration
    return dur < 30
}