我正在学习一个教程:http://www.devx.com/wireless/Article/43374所以我可以在歌曲的UITableView中添加字母排序和平移,我已经完成了编码,但我遵循的这种方法通过过滤数组和检索cellForRowAtIndexPath方法中的值来减慢UITableView的速度。我想不出如何删除多余的编码来提高速度。所有的MPMediaItems都存储在tableTracks数组中。它在viewDidLoad中初始化。电子音乐索引是一组字母(每首歌的第一个字母)。我扩展了MPMediaItem以包含NSStringfirstLetter,它是歌曲的第一个字母。
有什么能帮你加速的吗
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//--Create Cell--\
.........
//--Load Info--\
NSString *alphabet = [musicIndex objectAtIndex:[indexPath section]];
NSPredicate *predicate =
[NSPredicate predicateWithFormat:@"firstLetter beginswith[c] %@", alphabet];
NSArray *songs = [tableTracks filteredArrayUsingPredicate:predicate];
//Needed Object
MPMediaItem *item = [songs objectAtIndex:indexPath.row];
//--Rest of Method--\
...........
return cell;
}
如果您显示单独的部分,字母表中的每个字母都有一个部分,我会在viewDidLoad中根据我的数据创建一个字典数组,而不是在这里。字典将歌曲的第一个字母作为关键字,并将一组歌曲作为值。这样,所有的过滤和排序都是在前面完成的,而不是在填充表时在每一行中完成的。