0

我正在开发我的第一个应用程序,它正在解析来自网站的数据。根据用户的搜索,它可能必须解析 1000 个节点,这可能需要长达 30 秒才能将数据显示在 tableview 中。在用户部分滚动表视图之前,解析前 30 个节点而不显示下 30 个节点的一般策略是什么。我以这个网站(这里)为例,但我很难理解将我的解析方法放在哪里以使其一次加载 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 回答