Ich speichere PDFs von JSON. Als ich in den Dateipfad im App Dokumente Verzeichnis navigieren, um zu überprüfen ich die richtige Datei haben, und versuchen, das PDF zu öffnen, ich nicht das PDF öffnen kann, und ich bekomme diese Fehlermeldung:PDF in Dokumente speichern (PDF ist beschädigt)
Der Dateipfad ist gut, das Dokument ist da, aber es wurde gerade beschädigt oder so etwas. Ich nehme an, das ist mit NSData
verwandt, aber ich bin mir nicht sicher, was ich falsch mache. Irgendwelche Gedanken? Vielen Dank!
Viewcontroller:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"Downloading PDF Started");
// Get selected PDF
NSString *pdfSelected = self.pdfArray[indexPath.row];
NSLog(@"PDFSl: %@", pdfSelected);
NSData *pdfData = [NSData dataWithContentsOfURL:[NSURL URLWithString:pdfSelected]];
NSLog(@"PDFData: %@", pdfData);
NSString *pdfPath =[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@%ld.pdf",@"savedPDF", (long)indexPath.row]];
dispatch_async(dispatch_get_main_queue(), ^{
[pdfData writeToFile:pdfPath atomically:YES];
NSLog(@"PDF File Saved!");
NSLog(@"PDF File Path: %@", pdfPath);
// Save PDF path in defaults for evaluation in Details
[defaults setObject:pdfPath forKey:@"cachedPDFPath"];
});
});
JSON-Schnipsel:
{
"fname": "Nadene",
"lname": "Feehan",
"email": "[email protected]",
"phone": "(152) 555-5321",
"image": "http://logok.org/wp-content/uploads/2014/04/Apple-logo-grey-880x625.png",
"video": "https://github.com/versluis/Movie-Player/blob/master/Movie%20Player/video.mov?raw=true",
"pdf": "http://adcdownload.apple.com/Developer_Tools/Xcode_8_beta_3/Release_Notes_for_Xcode_8_beta_3.pdf"
},
Console:
PDFSl:http://adcdownload.apple.com/Developer_Tools/Xcode_8_beta_3/Release_Notes_for_Xcode_8_beta_3.pdf
PDFDataLength: 2070
PDF File Path: /Users/user/Library/Developer/CoreSimulator/Devices/1/data/Containers/Data/Application/A/Documents/savedPDF0.pdf
ich auch versucht:
NSData *pdfData = [NSData dataWithContentsOfURL:[NSURL URLWithString:pdfSelected] options:NSDataReadingUncached error:&errorPDF];
aber wenn ich die Konsole überprüft den Fehler zu sehen, es gab keine PDFDataError: (null)
Können Sie den Inhalt des Konsolenprotokolls anzeigen (insbesondere die Ergebnisse der Protokollanweisungen, die Sie anzeigen)? Wenn Sie 'PDFData' protokollieren, können Sie auch die Länge der Daten (d. H.' PdfData.length') protokollieren? Auch wenn das nichts Interessantes zeigt, können Sie versuchen, 'dataWithContentsOfURL: options: error:' anstelle des einfacheren 'dataWithContentsOfURL:' zu verwenden, um zu sehen, ob Sie tatsächlich und erfolgreich die Daten herunterladen. – fullofsquirrels
@fullofsquirrels Kein Problem, nur das Konsolenprotokoll hinzugefügt. Fällt dir irgendetwas auf? – SRMR
Offenbar ist die URL gesperrt, wenn Sie nicht mit Ihrem Entwicklerkonto angemeldet sind. Wenn ich es probiert habe, nachdem ich mich zuerst angemeldet habe, werde ich auf diese Seite weitergeleitet: https://developer.apple.com/unauthorized/ Sie müssen wahrscheinlich herausfinden, wie Sie mit Benutzern umgehen, die nicht signiert sind in ihre Entwickler-Accounts (und, um die Dinge komplizierter zu machen, ich glaube, dass developer.apple.com Sie nach etwa 20 Minuten oder einer Stunde Inaktivität automatisch abmeldet), und es sieht nicht so einfach aus, als einfach zu überprüfen HTTP-Status-/Fehlercodes – fullofsquirrels