2016-09-27 5 views
0

Ich bekomme dieses Verhalten mit Xcode 8.0. Das Problem besteht darin, dass QLPreviewController nach dem Herunterladen einer Datei und dem Speichern auf dem Dokumentenverzeichnis (Code unten) nur den Namen und die Größe des Dokuments anzeigt. Die Eigenschaft currentPreviewItem gibt das korrekte Pfaddokument zurück. Was noch seltsamer ist, ist, dass wenn ich versuche, das Dokument von einem anderen Controller in meiner App zu öffnen, es funktioniert. Ich habe QLPreviewControllerDelegate und QLPreviewControllerDataSource implementiert.QLPreviewController zeigt keine gespeicherte Datei an

-Code für das Herunterladen und Speichern von Dokument:

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

Dann, wenn Benutzer ein Dokument auswählt ich den Inhalt auf @ "filePath" gespeichert verwendenQLPreviewController zu zeigen. Ich habe versucht, es zu schieben und es modal zu präsentieren und in beiden Fällen zeigt es nur eine graue Seite mit dem Namen und der Größe des Dokuments an.

+0

Können Sie Ihr Projekt auf GitHub hochladen? und so kann ich das Detail wissen, danke. – aircraft

+0

@ QQ726535609 Hallo, ich kann das Projekt nicht teilen, weil es nicht persönlich ist. Wenn Sie mir jedoch sagen können, welche Informationen Sie benötigen, stelle ich Ihnen diese zur Verfügung. Vielen Dank! – bperezme

+0

Wenn Sie sicher sind, dass die heruntergeladenen Inhalte gültig sind, sollten Sie wahrscheinlich ein Radar auf bugreport.apple.com senden. – Raffael

Antwort

0

Datei wurde nicht angezeigt, da heruntergeladene Inhalte keine Dateierweiterung enthielten. Als ich versuchte, es in einem anderen Controller zu öffnen, funktionierte es, weil ich vorübergehend einen anderen Dateinamen mit der korrekten Erweiterung verwendete. Also habe ich das Problem gelöst, indem ich die Erweiterung .pdf zu heruntergeladenen Dateien hinzufüge, die sie nicht enthalten. Dies hat dazu geführt, dass QLViewController die Datei korrekt anzeigt.

0

In meinem Fall wurde eine Datei mit dem korrekten Namen erstellt, aber die Datei enthielt eine Fehlermeldung vom Server und repräsentierte daher nicht die erwartete Dateistruktur.