我使用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
。我试过推动它并以模态方式呈现它,在这两种情况下它只显示一个带有文档名称和大小的灰色页面。
答案 0 :(得分:0)
未显示文件,因为下载的内容不包含文件的扩展名。当我尝试在其他控制器中打开它时,它工作,因为我临时使用包含正确扩展名的另一个文件名。所以我解决了将扩展名.pdf添加到未包含它的下载文件的问题。这使得QLViewController正确显示文件。
答案 1 :(得分:0)
就我而言,创建的文件名称正确,但该文件包含来自服务器的错误消息,因此不代表预期的文件结构。