在我的「didFinishLaunchingWithOptions」方法中,我在我的GUI &中創建了一個UIProgressView,之後我調用一個方法來調用具有NSURLConnection的WebService以獲取帶有SOAP消息的XML。NSURLConnection&UIProgressView
在委託方法「connectionDidFinishLoading」中,我使用另一個類中的NSXMLParser解析XML。
問題是我想在解析XML時更新我的UIProgressView,但是在解析完整個XML後更新它。我聽說這是因爲NSURLconnection在主線程上運行並阻塞了用戶界面。
如何解析並更新進度欄?
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString * theXML = [[NSString alloc] initWithBytes:[webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding];
NSLog(@"The XML : %@", theXML);
[theXML release];
theXmlParser = [[NSXMLParser alloc] initWithData:webData];
XMLParser * theParseur = [[XMLParser alloc] initXMLParser];
[theXmlParser setDelegate:theParseur];
[theXmlParser setShouldProcessNamespaces:NO];
[theXmlParser setShouldReportNamespacePrefixes:NO];
[theXmlParser setShouldResolveExternalEntities:NO];
NSLog(@"Begin parsing...");
BOOL success = [theXmlParser parse];
if(success) {
// my code...
} else {
NSLog(@"XML partner : End Parsing > ERROR : %@", [[theXmlParser parserError] localizedDescription]);
[theXmlParser release];
}
[connection release];
[webData release];
}
謝謝您的回覆!但我不想在接收XML時更新進度欄,但在「connectionDidFinishLoading」中解析它時。你明白嗎 ? – Lelka
ok..parsing ....因爲你必須在不同的點更新進度條...共享你的代碼已收到響應.... –
- (void)連接:(NSURLConnection *)連接didReceiveResponse:(NSURLResponse *)響應{ \t \t [webData setLength:0]; }(SOrry,我不知道如何包裝我的代碼以獲得更好的閱讀效果...) – Lelka