В моем приложении я проверяю, входит ли текущая песня в альбом. Я могу это сделать, но обнаружил, что если альбом является частью компиляции, мой код не работает должным образом.
Что я хочу сделать, так это то, что текущая воспроизводимая песня является частью альбома. Кнопка становится активной, и если она не включена, кнопка не активируется. В моем 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
}
Что я сделал не так в своем коде?