好的,我在这里烧了一点头。
我只是想保存一个在UIWebView中加载的PDF文件。
这就是我所拥有的:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
BOOL isDir = NO;
NSError *error;
if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir == NO)
{
[[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
}
NSString *filePath = [cachePath stringByAppendingPathComponent:@"MissaoPilotoPortuguese.pdf"];
NSData *pdfFile = [NSData dataWithContentsOfURL:webView.request.URL];
[pdfFile writeToFile:filePath atomically:YES];
但由于某种原因,当我打电话打开PDF文件时,应用程序崩溃说网址路径为零:
NSString *path = [[NSBundle mainBundle] pathForResource:@"MissaoPilotoPortuguese" ofType:@"pdf"];
NSURL *urls = [NSURL fileURLWithPath:path];
self.documentController = [UIDocumentInteractionController interactionControllerWithURL:urls];
documentController.delegate = self;
[documentController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
关于我做错的任何想法?
由于
答案 0 :(得分:3)
在要保存的代码中,通过询问缓存目录,然后附加文件名来构造URL。
然后,当您尝试在第二个片段中打开它时,您只需要询问主包的目录 - 这与您上面的目录不同。
您的第二个片段可能看起来更像:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
NSString *filePath = [cachePath stringByAppendingPathComponent:@"MissaoPilotoPortuguese.pdf"];
NSURL *urls = [NSURL fileURLWithPath:filePath];
...
或者,如果它都在同一个方法中发生,那么只需重新使用之前构建它的filePath
。