【发布时间】:2016-09-27 21:42:05
【问题描述】:
我使用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。我尝试过推送它并以模态方式呈现它,在这两种情况下它都只显示一个带有文档名称和大小的灰色页面。
【问题讨论】:
-
你能把你的项目上传到github吗?让我知道细节,谢谢。
-
@QQ726535609 你好,我不能分享这个项目,因为它不是个人的。但是,如果您能告诉我您需要哪些信息,我会提供给您。谢谢!
-
如果您确定下载的内容是有效的,您可能应该在 bugreport.apple.com 上提交一份雷达报告
-
文件的扩展名是什么?
-
@ThomasDeniau 显然这就是问题所在。某些下载的文件在文件名中不包含其扩展名,因此 QLViewController 无法打开该文件。如果我手动添加扩展名,文件会正确显示。
标签: ios objective-c quicklook qlpreviewcontroller