我一直在使用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。我似乎无法弄清楚为什么那位艺术家和其他一些人被排除在外。非常感谢您的帮助。
答案 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()