QLPreviewController:临时文件位于何处?

时间:2011-05-05 17:50:30

标签: iphone ios pdf qlpreviewcontroller

我正在使用QLPreviewController从我的服务器获取和查看远程PDF。这非常好用,因为Apple在下载文件时内置了一个漂亮的“正在加载”图形。现在,我还想使用需要本地文件的UIDocumentInteractionController。但是,由于QLPreviewController已经下载了该文件,我想使用它。

有没有办法获取QLPreviewController下载文件的本地路径?

QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.dataSource = self;
previewController.delegate = self;
previewController.currentPreviewItemIndex = 0;
[[self navigationController] pushViewController:previewController animated:YES];
[previewController release];
// Where is the file stored?

2 个答案:

答案 0 :(得分:3)

我们有类似的情况,要显示的文件是远程的。这就是我们所做的:我们将数据源设置为nil。这样做是显示加载图标。在viewDidLoad中,我们初始化远程请求并在本地保存文件。下载文件后,我们正确设置数据源并刷新视图。

 //after file has been downloaded
 [self setDataSource:self];
 [self reloadData];

答案 1 :(得分:1)

QLPreviewController并非真正用于下载文件 - 来自QLPreviewItem的文档:

  

@property (readonly) NSURL *previewItemURL;

     

快速查看使用此属性   预览控制器来获取项目   URL。在典型的使用中,你会的   在你的实现一个getter方法   预览项目类来提供此功能   值。

     

此属性的值必须是文件类型的网址。

所以你应该使用别的东西来下载文件。它可能与网络资源一起使用,但它并不是真正适用于它。甚至不确定你是如何管理它的,因为我很确定如果你没有传递文件URL,QuickLookController就会出错。控制器很可能将文件下载到临时目录,或直接下载到内存。无论哪种方式,它都无法供您使用。

您应该自己下载文件,然后向Quick Look控制器传递指向它的文件URL。如果您想让自己更轻松,可以使用ASIHTTP等网络库。