我正在構建一個應用程序,它將讀取rss提要並將它們呈現在UITableViews中。我搜索了谷歌,這裏和ai決定使用LibXML。加載和解析xml文檔在iphone中凍結我的GUI
當我的應用程序啓動時,檢查它是否有有效的互聯網連接,並抓取一個rss提要,我從中提取一些數據,然後用tableViews製作一個uiTabBar。解析第一個rss提要並構建UITabBar後,對於我的uiTabBar中的每個按鈕,我都有一個不同的rss提要(類別)。當我有一個很好的互聯網連接(wifi),甚至3G我的應用程序工作真的很好,但當互聯網連接遭受我的應用程序也是如此。
因爲我一個接一個地解析所有的feed,並且在主線程中GUI只是停止響應,這是一個問題。
我使用的libxml解析我的飼料,我不喜歡這樣寫道:
CXMLDocument *rssParser = [[[CXMLDocument alloc] initWithContentsOfURL:url options:0 error:nil] autorelease];
NSArray *resultDate = NULL;
resultDate = [rssParser nodesForXPath:@"//channel" error:nil];
for(CXMLElement *date in resultDate)
{
NSString *data = (NSString *)[[date childAtIndex:12] stringValue];
[self setLastBuildDate:[[self parseDate:data] copy]];
break;
}
NSArray *resultNodes = NULL;
resultNodes = [rssParser nodesForXPath:@"//item" error:nil];
for(CXMLElement *resultElement in resultNodes)
{
NSMutableDictionary *feed = [[NSMutableDictionary alloc] init];
int counter;
for(counter = 0; counter < [resultElement childCount]; counter++)
{
[feed setObject:[[resultElement childAtIndex:counter] stringValue] forKey:[[resultElement childAtIndex:counter] name]];
}
[links addObject:[feed objectForKey:@"link"]];
[feedsList addObject:[feed copy]];
[feed release];
}
[newsTable reloadData];
我想,當我把在uitabbar按鈕來解析爲第一個按鈕飼料和其他的人,但我不能調用捕獲和解析-didselectitem事件上的feed的函數。
現在我想解析他們在另一個線程不在主要..有人可以給我一些指針?
謝謝你提前
它的工作原理,謝謝。 – 2009-07-16 13:30:53