QLPreviewController不显示已保存的文件

问题描述 投票:0回答:2

我使用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。我试过推动它并以模态方式呈现它,在这两种情况下它只显示一个带有文档名称和大小的灰色页面。

ios objective-c quicklook qlpreviewcontroller
2个回答
0
投票

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


0
投票

在我的例子中,使用正确的名称创建了一个文件,但该文件包含来自服务器的错误消息,因此不代表预期的文件结构。

© www.soinside.com 2019 - 2024. All rights reserved.