我正在关注教程:http://www.devx.com/wireless/Article/43374 所以我可以添加字母排序和平移到我的UITableView歌曲,我已完成编码,但我遵循的这个方法通过过滤数组和检索cellForRowAtIndexPath方法中的值来减慢UITableView。 我无法弄清楚如何删除多余的编码来提高速度。所有MPMediaItem都存储在tableTracks数组中。这是在viewDidLoad中初始化的。而thee musicIndex是一个字母数组(每首歌的第一个字母)。我扩展了MPMediaItem以包含一首NSString firstLetter,它是该歌曲的第一个字母。
有任何帮助加快速度吗?
-(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;
}
答案 0 :(得分:1)
如果你要显示单独的部分,每个字母对应一个字母,我会在viewDidLoad中创建一个由我的数据组成的字典数组,而不是在这里。字典将歌曲的第一个字母作为键,并将一系列歌曲作为值。这样,所有的过滤和排序都是预先完成的,而不是在填充表时的每一行中完成。