将本地生成的 PDF 保存到 iOS8 中应用程序的文档文件夹

Save locally generated PDF to app's documents folder in iOS8

执行此操作时,我的应用程序似乎不再能够将文件保存到其文档文件夹中:

        NSString *path = [documentsDirectory stringByAppendingPathComponent:fileName];

        NSData *dta = [[NSData alloc] init];
        dta = [NSData dataWithContentsOfFile:path];

        NSLog(@"writing file: %@", path);


        if ([dta writeToFile:path options:NSAtomicWrite error:nil] == NO) {
            NSLog(@"writeToFile error");

        }else {

            NSLog(@"Written: %@", path);
            [self addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]];
        }

我确实在日志中得到 "Written" 的完整路径: 书面:/var/mobile/Containers/Data/Application/ECBCD65D-A990-4758-A07F-ECE48E269278/Documents/9d440408-4758-4219-9c9c-12fe69cf82f2_pdf.pdf

只要我不退出应用程序,我就可以像这样在 UIWebView 中加载 PDF(pdfPath 是我传递给加载 PDF 文件的函数的字符串):

[www loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:pdfPath]]];

我们一如既往地非常感谢您的帮助。

好吧,在搞砸之后我发现,由于每次我 运行 应用程序时文档目录都会更改路径,所以我不得不:

  1. 将文件写入documents文件夹,完整路径为 文件:

    NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask ,YES ); NSString *documentsDirectory = [路径 objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent: fileName];

    NSData *dta = [[NSData alloc] init];
    dta = [NSData dataWithContentsOfFile:path];
    
    if ([dta writeToFile:path options:NSAtomicWrite error:nil] == NO) {
        NSLog(@"writeToFile error");
    
    }else {
    
        NSLog(@"Written: %@", path);
        [self addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]];
    }
    
  2. 只保存文件名到我的数据库

  3. 使用新生成的完整文档目录路径加载文件并附加来自我的数据库的文件名:

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [路径 objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent: pdfPath];