我想对从MPMediaQuery
生成的UITableView
进行基本排序。
我想要的只是一个基本的歌曲列表,将歌曲分为a、B、C、D等部分。这应该不难,但我尝试过的每一个教程最终都没有给我这些结果。
任何帮助都将是美妙的。这是我的基本代码。我意识到这甚至还没有达到我想要的目标,但我认为经验丰富的开发人员从现在开始帮助我会比我陷入的困境更容易
我如何生成数据:
MPMediaQuery *musicLibraryQuery = [[MPMediaQuery alloc] init];
NSArray *musicLibraryArray = [musicLibraryQuery items];
songLibrary = [NSMutableArray arrayWithArray:musicLibraryArray];
以下是我的UITableView方法:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [songLibrary count];
}
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"SongCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
MPMediaItem *song = [[songLibrary objectAtIndex:[indexPath row]] representativeItem];
cell.textLabel.text = [song valueForProperty:MPMediaItemPropertyTitle];
return cell;
}
u需要对数组进行排序,例如
songLibrary = [musicLibraryArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
如果您的数组中有Dictionary作为对象,并且您想对数组进行属性键排序,那么请执行以下操作:
static NSString*const keyToSortBy=@"keyToSortBy";
NSArray * sortedArray = [array sortedArrayUsingComparator:^(id obj1, id obj2) {
NSString *s1 = [obj1 objectForKey:keyToSortBy];
NSString *s2 = [obj2 objectForKey:keyToSortBy];
return [s1 caseInsensitiveCompare:s2];
}];
使用这个,这可能会对有用吗
songLibrary=[songLibrary sortedArrayUsingSelector:@selector(compare:)];