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

时间:2017-01-29 16:46:10

标签: ios swift2 mpmediaquery

我一直在使用Swift 2.3编写音乐应用程序。我发现的麻烦是我的MPMediaQuery.artistsQuery()没有提供所有的艺术家。使用iTunes,我已经跟踪它,如果“相册是各种艺术家的歌曲汇编”被检查,那么该艺术家将不会出现在我的tableView中。例如,我使用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
}

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

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

1 个答案:

答案 0 :(得分:2)

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