0

私はチュートリアルに従っていました: http://www.devx.com/wireless/Article/43374 そのため、曲の UITableView にアルファベットの並べ替えとパンを追加でき、コーディングは完了しましたが、この方法に従っていると、UITableView が遅くなります。 cellForRowAtIndexPath メソッドで配列をフィルタリングし、値を取得します。余分なコーディングを削除して速度を上げる方法がわかりません。すべての MPMediaItems は tableTracks 配列に格納されます。viewDidLoad で初期化されます。そして、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;
}
4

1 に答える 1

1

アルファベットの文字ごとに 1 つの個別のセクションを表示している場合は、ここではなく、viewDidLoad でデータから辞書の配列を作成します。辞書には、曲の最初の文字がキーとして、曲の配列が値として含まれます。こうすることで、すべてのフィルタリングと並べ替えが、テーブルにデータが入力されるたびに行ごとに行われるのではなく、事前に行われます。

于 2013-02-09T21:09:57.083 に答える