2016-09-27 64 views
0

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

代码下载和保存文件:

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); 
    }); 
}); 

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

+0

你可以上传你的项目到github吗?所以我可以知道细节,谢谢。 – aircraft

+0

@ QQ726535609你好,我不能分享这个项目,因为它不是个人的。但是,如果您能告诉我您需要哪些信息,我会提供给您。谢谢! – bperezme

+0

如果您确定下载的内容是有效的,您应该在bugreport.apple.com上提供雷达文件 – Raffael

回答

0

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

0

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

相关问题