0

私は最初のアプリに取り組んでおり、ウェブサイトからのデータを解析しています。ユーザーの検索によっては、1000 個のノードを解析する必要があり、テーブルビューにデータが表示されるまでに最大 30 秒かかる場合があります。最初の 30 個のノードを解析し、ユーザーがテーブル ビューを部分的にスクロールするまで次の 30 個を表示しないための一般的な戦略は何ですか。この Web サイト (ここ) を例として使用しましたが、一度に 30 個のノードをロードするために解析メソッドをどこに配置すればよいかを理解するのに苦労しています。

   #import "DataLoader.h"

@implementation DataLoader

@synthesize delegate;

- (void)loadData
{
[self performSelector:@selector(loadDataDelayed) withObject:nil afterDelay:3];
}

- (void)loadDataDelayed
{

[parsing method here]
NSMutableArray *array = [NSMutableArray arrayWithCapacity:30];
for (int i = 1; i<=30 ; i++) {
    [array addObject:[propertyList objectAtIndex:i];
}
[delegate.searchResultOfSets addObjectsFromArray:array];
[delegate.tableView reloadData];
// Always remember to set loading to NO whenever you finish loading the data.
delegate.loading = NO;
}
@end

しかし、これは明らかに最初にすべてのデータを解析します。解析を最適化する方法についてのアイデアはありますか?

4

1 に答える 1

0

最初に 30 アイテムのみを取得し、ユーザーが下にスクロールしたときに、別の 30 アイテムを再度ダウンロードすると、次のようになります。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
        if(indexPath.row == [self.arrayOfItems count] && hasMoreItemsToLoad) 
           [self loadNext30Items];
}
于 2012-11-17T06:02:48.763 に答える