我想下载一个包含NSURLRequest
的文件并将其保存,但在行中使用
NSData * data = ...
会发生错误。
NSURL *Urlstring = [NSURL URLWithString:@"http://yourdomain.com/yourfile.pdf"];
NSURLRequest *request = [NSURLRequest requestWithURL: Urlstring];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
documentsURL = [documentsURL URLByAppendingPathComponent:@"localFile.pdf"];
[data writeToURL:documentsURL atomically:YES];
警告消息是我应该使用NSURLSession dataTaskwithrequest
“因为sendSynchronousRequest
在iOS 9中已被弃用,但这不起作用,我希望有人能帮助我
发布于 2015-09-07 22:46:07
现在您必须使用NSURLSession
示例(GET):
-(void)placeGetRequest:(NSString *)action withHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))ourBlock {
NSString *urlString = [NSString stringWithFormat:@"%@/%@", URL_API, action];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:ourBlock] resume];
}
现在,您将需要使用一个操作(如果愿意,也可以使用完整的URL )和API调用返回时将执行的块来调用该方法。
[self placeGetRequest:@"action" withHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// your code
}];
在该块中,您将收到一个包含响应数据的NSData
和一个包含HTTP响应的NSURLResponse
。所以现在,你可以把你的代码放在那里:
NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
documentsURL = [documentsURL URLByAppendingPathComponent:@"localFile.pdf"];
[data writeToURL:documentsURL atomically:YES];
NSURLSession与NSURLConnection的主要区别
中使用application:handleEventsForBackgroundURLSession:completionHandler
因此,通过使用NSURLSession,您无需管理或检查您的互联网连接,因为操作系统会为您做这件事。
https://stackoverflow.com/questions/32441229
复制相似问题