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

时间:2015-05-26 15:03:25

标签: pdf ios8 uiwebview nsdocumentdirectory writetofile

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

        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 个答案:

答案 0 :(得分:0)

好吧,在发现问题之后我发现每次运行应用程序时文档目录都会改变路径,我不得不:

  1. 将文件写入文档文件夹,其中包含完整路径 文件:

    NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString * documentsDirectory = [paths 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. 使用完整新生成的Documents目录路径加载文件,并附加我的数据库中的文件名:

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