2017-01-29 1 views
0

Я пишу музыкальное приложение с использованием Swift 2.3. Проблема, которую я обнаружил, заключается в том, что мой MPMediaQuery.artistsQuery() не предоставляет всех художников. Используя iTunes, я отслеживал его, если «Альбом является компиляцией песен разных художников» проверен, то этот художник не появится в моем TableView. Например, один из CD (который не отображается в моем табличном представлении), который я импортировал с помощью iTunes, это: Little River Band, Greatest Hits. iTunes, похоже, думает, что это компиляция различных исполнителей, и, хотя я не согласен, мне все равно нужно обработать сценарий.iOS MPMediaQuery.artistsQuery() не возвращает каждого исполнителя, если компиляция проверена.

var qryArtists = MPMediaQuery.artistsQuery() 
qryArtists.groupingType = MPMediaGrouping.Artist 

// Set the cell in the table 
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    // I am using the custom class that I created called: myCustomArtistTableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier("artistIdCell", forIndexPath: indexPath) as! myCustomArtistTableViewCell 

    let currLoc = qryArtists.collectionSections![indexPath.section].range.location 
    let rowItem = qryArtists.collections![indexPath.row + currLoc] 

    cell.artistTitle.text = rowItem.items[0].artist 

    return cell 
} 

Все разделы в таблице в порядке. Я просто скучаю по нескольким художникам, в том числе: Little River Band.

Кроме того, тег исполнителя на каждой песне на моем примере альбома содержит строку: Little River Band. Я просто не могу понять, почему этот художник и некоторые другие исключены. Большое спасибо за любую помощь.

ответ

1

Использование запроса .songs(), сгруппированного по artist, похоже, включает в себя всех исполнителей (в том числе только с композиционными песнями).

Swift 3 Пример:

let query = MPMediaQuery.songs() 
query.groupingType = MPMediaGrouping.artist 

Или как MPMediaQuery расширение:

extension MPMediaQuery { 
    public static func artistsAll() -> MPMediaQuery { 
     let query = MPMediaQuery.songs() 
     query.groupingType = MPMediaGrouping.artist 
     return query 
    } 
} 

Использование:

let query = MPMediaQuery.artistsAll() 
+0

Спасибо! Это работает!!! В Swift 2.3 я использовал: var qryArtists = MPMediaQuery.songsQuery() qryArtists.groupingType = MPMediaGrouping.Artist. Желание я знал, почему это сработало. Кроме того, хотелось бы знать, почему iTunes решила проверить «компиляцию песен различными артистами» для компакт-диска Little River Band, который я пробовал. Его исполнитель альбома НЕ говорит «Разное». Название альбома содержит фразу: «Greatest Hits». То же самое для Atlantic River Section, его Название альбома содержит: «Лучшее». Похоже, это должно быть проще и более последовательным. – James64

Смежные вопросы