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];
我正在尝试在 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];