iOS MPMediaQuery.artistsQuery() 如果选中编译,则不会 return 每个艺术家

iOS MPMediaQuery.artistsQuery() doesn't return every artist if compilation is checked

我一直在使用 Swift 2.3 编写音乐应用程序。我发现的问题是我的 MPMediaQuery.artistsQuery() 没有提供所有的艺术家。使用 iTunes,我已经追踪到如果 "Album is a compilation of songs by various artists" 被选中,那么该艺术家将不会出现在我的 table 视图中。例如,我使用 iTunes 导入的其中一张 CD(未显示在我的 tableView 中)是:Little River Band,Greatest Hits。 iTunes似乎认为它是各种艺术家的合集,虽然我不同意,但我仍然需要处理这种情况。

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
}

table 中的所有部分都很好。我只是缺少一些艺术家,包括:Little River Band。

此外,我的示例专辑中每首歌曲的艺术家标签都包含字符串:Little River Band。我似乎无法弄清楚为什么那个艺术家和其他一些人被排除在外。非常感谢您的帮助。

使用 .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()