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
}
我正在像这样从用户的音乐库中获取音乐曲目:
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
}