我想从某个服务器下载一些文件。下载文件的功能在 Thread 中运行。所以,你可以在这里看到它:
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];
}
问题
为什么这三个功能不起作用?它不会调用,永远不会。
我该如何解决?
最佳答案
来自 Art 的回答:NSURLConnection delegate methods are not called
尝试在主线程上运行操作:
NSURLConnection * connection = [[NSURLConnection alloc]
initWithRequest:request
delegate:self startImmediately:NO];
[connection scheduleInRunLoop:[NSRunLoop mainRunLoop]
forMode:NSDefaultRunLoopMode];
[connection start];
关于iphone - 不要调用连接 :(NSURLConnection *)connection didReceiveData:(NSData *)data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14607116/