我知道已经有很多主题,但是似乎没有一个问题能启发我的问题。
我应该从服务器上的JSON请求中获取PDF文件。下载任务过程被调用,但是当我尝试将NSData存储到文件时,它不会成功,但不会返回任何错误。
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location {
NSData *dataPdf = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://..."]];
/// Get path directory
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
[[NSFileManager defaultManager] createDirectoryAtPath:documentsDirectory withIntermediateDirectories:YES attributes:nil error:nil];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory, @"msc.pdf"];
NSLog(@"filePath: %@", filePath); /Users/.../Devices/.../Documents/msc.pdf
NSError *error = nil;
BOOL success = [dataPdf writeToFile:filePath options:NSDataWritingAtomic error:&error];
if (error) {
NSLog(@"Error:\n%@", error.localizedDescription); // -> Not called
}
else {
NSLog(@"Success? %hhd", success); // -> Returns NO
}
}
同一段代码可用于其他PDF下载(但此段更为复杂,因为它涉及服务器端的某些脚本而不是直接链接)。
有人知道发生了什么问题吗?
我不知道它是否可以使事情更清晰,但我不确切知道我是否真的应该得到要获取的PDF文件。我所知道的是,至少下载了一些字节(NSURLSession didWriteData返回487),因为NSData不为空/无,所以应该可以在设备上写入这些字节。
确保dataPdf
不是nil
-我只是自己犯了这个错误!