2016-09-27 40 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

在我的情況下,使用正確的名稱創建了一個文件,但該文件包含來自服務器的錯誤消息,因此不表示預期的文件結構。

相關問題