MPMediaQuery - 获取每个 'section' 的歌曲

MPMediaQuery - getting the songs for each 'section'

我正在尝试在 objective-c 的 iOS 上构建媒体浏览器。 到目前为止我可以得到歌曲查询:

_query = [MPMediaQuery songsQuery];

在我的 tableView 数据源中,我可以得到部分的数量和部分标题,如下所示:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if(_query)
    {
        return _query.itemSections.count;
    }
    
    return 1;
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    
    return _query.itemSections[section].title;
}

这给了我(比方说)26 个部分,标题如“A”、“B”、“C”等等...正如预期的那样。 我不明白的是如何获得每个部分的歌曲数。即如何获取“A”或“B”等部分的所有歌曲

如果我对你的问题理解正确,你想获得每个 MPMediaQuery 部分中的歌曲数量。

documentation开始,MPMediaQuerySection应该包括一个range 属性 存储部分中包含的项目数组的范围。然后可以通过取范围的 length 来获得歌曲的数量。像这样:

NSUInteger numSongs = _query.itemSections[section].range.length;

您还应该能够像这样获取该部分中所有歌曲的数组:

//The range of the song in the section
NSRange *sectionRange = _query.itemSections[section].range;
//Array of MPMediaItems in the section
NSArray *songsInSection = [_query.items subarrayWithRange: sectionRange];