NSurlconncetion получал длину данных всегда 0, но сохранение файла работает - PullRequest
0 голосов
/ 06 января 2011

Привет, я хочу показать полученные байты в консоли.

<code>
  (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
 [receivedData appendData:data];
 NSNumber *resourceLength = [NSNumber numberWithUnsignedInteger:[receivedData length]];
    NSLog(@"resourceData length: %d ", [resourceLength intValue]);
 if (file)  { 
        [file seekToEndOfFile];
    } 
 [file writeData:data]; 
}

файл успешно загружен и сохранен в docoument dir, но в nslog всегда указывается длина resourceData: 0

receiveata - NSMutableData * receiveData;в .h файле

странно то, что исключенные байты работают хорошо.вот код для этого:


- (void)connection:(NSURLConnection <em>)connection didReceiveResponse:(NSURLResponse</em>)response {
 localFilename = [[[url2 absoluteString] lastPathComponent] copy];
 NSLog(localFilename); 
 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory = [paths objectAtIndex:0] ; 
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:localFilename]; 
    [[NSFileManager defaultManager] createFileAtPath:appFile contents:nil attributes:nil];</p>

<p>expectedBytes = [response expectedContentLength];
 NSLog(@"content-length: %lli Bytes", expectedBytes);
 file = [[NSFileHandle fileHandleForUpdatingAtPath:appFile] retain];</p>

<p>if (file)   {</p>

<pre><code>    [file seekToEndOfFile];
}

}

Может кто-нибудь помочь мне.я действительно не знаю, что я делаю неправильно

С уважением

Таммо

1 Ответ

1 голос
/ 06 января 2011

Вы выделили и инициализировали receivedData?Обычно делают

receivedData = [[NSMutableData data] retain];

сразу после создания экземпляра NSURLConnection, а затем

[receivedData setLength:0];

при получении ответа через -connection:didReceiveResponse: и

[receivedData appendData:data];

при получении данных через -connection:didReceiveData:.Это показано в Руководстве по программированию системы загрузки URL *1015*.Если вы не создали экземпляр receivedData, вероятно, nil и [receivedData length] в этом случае вернет 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...