1

サーバーからファイルをダウンロードしたい。ファイルをダウンロードする機能はスレッドで動作しています。だから、あなたはここでそれを見ることができます:

    NSURL *url = [NSURL URLWithString:fileDataBaseURL];
NSURLRequest *theRequest=[NSURLRequest requestWithURL:url
                                          cachePolicy:NSURLRequestUseProtocolCachePolicy
                                      timeoutInterval:60.0];

NSURLConnection *theConnection = [NSURLConnection connectionWithRequest:theRequest delegate:self];
if (theConnection) {
    [[NSFileManager defaultManager] createFileAtPath:fileDataBaseEnc contents:nil attributes:nil];
    self._handleDataBaseEnc = [NSFileHandle fileHandleForUpdatingAtPath:fileDataBaseEnc];
} else {
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];

}

また、機能があります:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [_handleDataBaseEnc seekToEndOfFile];

    NSMutableData *receivedData = [NSMutableData data];
    [receivedData setLength:0];
    [receivedData appendData:data];

    [_handleDataBaseEnc writeData:receivedData];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    [_handleDataBaseEnc closeFile];
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}

 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
 {
     [_handleDataBaseEnc closeFile];
     [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
 }

質問

これらの 3 つの機能が機能しないのはなぜですか? それは決して呼びません。

どうすれば修正できますか?

4

2 に答える 2

1

ここのアートの答えから:NSURLConnectionデリゲートメソッドは呼び出されません

メインスレッドで操作を実行してみてください:

NSURLConnection * connection = [[NSURLConnection alloc] 
                                initWithRequest:request
                                       delegate:self startImmediately:NO];

[connection scheduleInRunLoop:[NSRunLoop mainRunLoop] 
                      forMode:NSDefaultRunLoopMode];
[connection start];
于 2013-01-30T15:16:11.647 に答える
0

投稿されたコードには、デリゲート メソッドが呼び出されない理由の手がかりを与えるものは何もありません。私が彼らについて気づいたことの 1 つは、彼らが特別なことをしていないということです。次を使用して、1行で接続を実行するのはどうですか:

+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler

theConnection がインスタンス化された直後にそれを呼び出します。

于 2013-01-30T15:31:02.290 に答える