2013-06-20 58 views
0

我在iOS上做了一個登錄方法,它通過url向PHP頁面發送GET請求,當我嘗試從網站讀取輸出時,數據在PHP之前讀取完成MySQL查詢,我想知道是否有什麼辦法可以等到網頁完全加載完成從中 代碼讀取數據:在網頁完成後讀取數據加載

-(NSString *)getWebpageData:(NSString *)url { 
    NSURL *URL = [NSURL URLWithString:url]; 
    NSError *error = nil; 
    NSString *content = [NSString stringWithContentsOfURL:URL encoding:NSUTF8StringEncoding error:&error]; 
    return content; 
} 

回答

0

我將通過sendAsynchronousRequest嘗試使用NSURLConnection這樣的...

NSOperationQueue *myQueue = [[NSOperationQueue alloc]init]; 
    [NSURLConnection sendAsynchronousRequest:request queue:myQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
     //do something 
    }]; 

大多數情況下不言自明的是,當處理程序塊被解僱時,你就擁有了你的內容。

另一種選擇是調用NSURLConnectionDataDelegate。當你打電話給你的網址時,它會觸發一些方法讓你知道什麼時候完成。

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{ 
    //Fired on error 
} 

- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite 
{ 
    //Fired First 
} 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    //Fired Second 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    //Fired Third 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    //Fired Fourth 
} 

使用委託方法你可能會想利用didReceiveData,讓你有你的數據在那裏。祝你好運。