2
我正在使用NSURLConnection
下載位圖。我將代表設置爲self
,並實施方法connection:didReceiveData
和connectionDidFinishLoading
。當收到數據時,我將它存儲在一個NSMutableData
對象(稱爲輸入)中,然後在連接結束時,我使用它來創建位圖。問題是我收到connection:didReceiveData
中的數據,但在connection:DidFinishLoading
中爲空。我該如何解決?NSURLConnection數據請求結束時無數據
- (void)start
{
NSURL *url = [NSURL URLWithString:src];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
connection = [[NSURLConnection alloc] initWithRequest:request
delegate:self
startImmediately:YES];
}
- (void)connection:(NSURLConnection *)conn
didReceiveData:(NSData *)d
{
NSLog(@"Data Received: %@", d);//This prints the correct data
//Add data chunk to input
[input appendData:d];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)conn
{
CPLog(@"Finished Receiving bitmap from server. Data received with length %d: %@", [input length], input);//this prints length 0 and a value of (null)
CFDataRef imgData = (__bridge CFDataRef) input;
CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData (imgData);
CGImageRef image;
if (!imgDataProvider)
{
NSLog(@"Request Failed!");//happens every time
[callback handleBitmap:nil];
return;
}
image = CGImageCreateWithJPEGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault);
[callback handleBitmap:image];
return;
}