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.
Können Sie Ihr Projekt auf GitHub hochladen? und so kann ich das Detail wissen, danke. – aircraft
@ 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
Wenn Sie sicher sind, dass die heruntergeladenen Inhalte gültig sind, sollten Sie wahrscheinlich ein Radar auf bugreport.apple.com senden. – Raffael