2012-11-17 90 views
0

我正在處理我的第一個應用程序,它正在解析網站中的數據。根據用戶的搜索,它可能需要解析1000個節點,在數據顯示在tableview之前可能需要30秒。通過前30個節點進行解析並不顯示下一個30的常規策略是什麼,直到用戶部分滾動瀏覽表格視圖。我以這個網站(here)爲例,但我很難理解我的解析方法讓它每次加載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 

但是,這顯然首先解析所有的數據。任何想法如何優化我的解析?

回答

0

首先只抓取30個項目,然後,當用戶向下滾動到底部時,再次下載另外30個項目,可能如下。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
     if(indexPath.row == [self.arrayOfItems count] && hasMoreItemsToLoad) 
      [self loadNext30Items]; 
} 
+0

謝謝,抱歉太天真了。我是編程新手,我不確定如何解析細分。如何在30個項目後停止解析,然後在解析停止的地方拾取它? – badger0053