QLPreviewController不显示已保存的文件

时间:2016-09-27 21:42:06

标签: ios objective-c quicklook qlpreviewcontroller

我使用Xcode 8.0获得此行为。问题是,在下载文件并将其存储在文档目录(下面提供的代码)后,QLPreviewController仅显示文档的名称和大小。属性 currentPreviewItem 返回正确的路径文档。更奇怪的是,如果我尝试从我的应用程序中的另一个控制器打开该文档,它可以正常工作。我已经实现了 QLPreviewControllerDelegate QLPreviewControllerDataSource

下载和保存文档的代码:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
    NSURL *url = [NSURL URLWithString:file[@"url"]];

    NSData *data = [NSData dataWithContentsOfURL:url];

    if (!data) {
        completion([NSError new]);
        return;
    }

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:AppName];
    path = [path stringByAppendingPathComponent:file[@"name"]];

    file[@"filePath"] = [NSURL fileURLWithPath:path];

    dispatch_async(dispatch_get_main_queue(), ^{
        [[NSFileManager defaultManager] createFileAtPath:path contents:data attributes:nil];
        completion(nil);
    });
});

然后,当用户选择文档时,我使用 @“filePath”上保存的内容来显示QLPreviewController。我试过推动它并以模态方式呈现它,在这两种情况下它只显示一个带有文档名称和大小的灰色页面。

2 个答案:

答案 0 :(得分:0)

未显示文件,因为下载的内容不包含文件的扩展名。当我尝试在其他控制器中打开它时,它工作,因为我临时使用包含正确扩展名的另一个文件名。所以我解决了将扩展名.pdf添加到未包含它的下载文件的问题。这使得QLViewController正确显示文件。

答案 1 :(得分:0)

就我而言,创建的文件名称正确,但该文件包含来自服务器的错误消息,因此不代表预期的文件结构。