2011-11-02 3 views
0

내 iPAD 응용 프로그램에는 6 개의 UITableView가 있습니다. 각각의 tableview에 대한 데이터를 얻으려면 NSURLConnection을 사용하여 Webservice를 호출하고 웹 서비스에서 돌아와 데이터를 데이터베이스에 저장하는 XML을 구문 분석합니다.비동기 적으로 데이터를받지 않는 여러보기에 대한 NSURLConnection

저는 6 개의 UITableView를 가지고 있기 때문에 동시에 각보기에 대한 Webservice 요청을 보냅니다. 그러나, 내가 직면하고있는 문제는 내 애플 리케이션이 1 테이블보기에 대한 -(void) connection:(NSURLConnection *) connection didReceiveData:(NSData *) data의 Webservice에서 데이터를 수신하기 때문에 다른 tableviews의 파서가 수행하는 데이터베이스 작업에 따라 달라진다는 것입니다.

예를 들어, tableview의 A, B, C, D에 대한 웹 서비스 요청은 모두 동시에 전송됩니다. 받은 데이터가 구문 분석되어 내 데이터베이스에 저장 될 때까지 -(void) connection:(NSURLConnection *) connection didReceiveData:(NSData *) data 함수의 데이터가 반환 될 때까지 다른 테이블 뷰에 대한 응답이 반환되지 않습니다.

내가 뭘 잘못하고 있는지 알 수 없습니다. NSURLConnection은 비동기식이지만 응답이 너무 좋아 보이지 않습니다.

WebService에 요청 전송 용 - - 내가 무엇을 잘못하고 있어요

- (void) callMedicationWebService 
{ 
    conn = [[NSURLConnection alloc] initWithRequest:req delegate:self]; 
    if (conn) 
    { 
     webData = [[NSMutableData data] retain]; 
    } 
} 

-(void) connection:(NSURLConnection *) connection 
didReceiveResponse:(NSURLResponse *) response 
{ 
    [webData setLength: 0]; 
} 


-(void) connection:(NSURLConnection *) connection 
    didReceiveData:(NSData *) data 
{ 
    [webData appendData:data]; 

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"HH:mm:ss"]; 
    NSString *alertMessage = [formatter stringFromDate:[NSDate date]]; 
    [formatter release]; 

    NSLog(@"got data back from WS %@", alertMessage); 
} 

-(void) connectionDidFinishLoading:(NSURLConnection *) connection 
{ 
    [connection release]; 

    // Parse xml 
    NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:[CommonHelper decodeHTMLCharactorsFromString:webData]]; 

    TableAHandler *handler = [[TableAHandler alloc] init]; 
    [handler initTableAHandler]; 
    [xmlParser setDelegate:handler]; 
    [xmlParser setShouldResolveExternalEntities:YES]; 
    [xmlParser setShouldProcessNamespaces:YES]; 

    BOOL success = [xmlParser parse]; 
    } 

누군가가 나를 도울 수 있을까를 여기

내 코드?

+0

어떻게 그랬습니까? 나는 같은 문제가있다! – Leonardo

답변

1

비동기가 반드시 콜백 함수 자체가 별도의 스레드에서 호출된다는 것을 의미하지는 않습니다.

파싱 프로세스를 별도의 스레드로 이동해야 할 때 동시에 모든 파싱 프로세스를 수행하려면이 옵션을 선택하십시오.

이지만 5 가지 URL 요청을 사용하지 않고 모든 필요한 정보를 반환하는 솔루션 만 사용하는 것이 좋습니다.

+0

ok .. 답장을 보내 주셔서 감사합니다. 나는 같은 것을 구현하려고합니다 .. – learner2010

관련 문제