JSONからPDFを保存しています。私が確認するために、アプリケーションのドキュメントディレクトリ内のファイルのパスに移動すると、私は右のファイルを持っている、とPDFを開こうと、私はPDFを開くことができない、と私はこのエラーを取得する:PDFをドキュメントに保存する(PDFは壊れています)
ファイルパスは良好ですが、ドキュメントは存在しますが、破損しています。私はこれがNSData
に関連していると思うだろうが、私は何が間違っているのか分からない。何かご意見は?ありがとう!
の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スニペット:
{
"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"
},
コンソール:
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
私も試してみました:
NSData *pdfData = [NSData dataWithContentsOfURL:[NSURL URLWithString:pdfSelected] options:NSDataReadingUncached error:&errorPDF];
私は、エラーを確認するために、コンソールをチェックするときには、あなたの開発者アカウントでログインしていない場合PDFDataError: (null)
コンソールログの内容(具体的には、表示されたログ記録の結果)を表示できますか?また、 'PDFData'をログすると、データの長さ(つまり' pdfData.length')も記録できますか?また、興味深い内容が表示されない場合は、より単純な 'dataWithContentsOfURL:'の代わりに 'dataWithContentsOfURL:options:error:'を使用して、データを実際にダウンロードしているかどうかを確認してください。 – fullofsquirrels
@fullofsquirrels問題はありません。コンソールログを追加しました。何か目立つものはありますか? – SRMR
デベロッパーアカウントでログインしていないとURLがロックされているようです。最初にサインインしたときに、このページにリダイレクトされました:https://developer.apple.com/unautifiedized/ おそらく、署名されていないユーザーを処理する方法を整理する必要があります自分の開発者のアカウントに追加する必要があります(さらに、複雑なものにするためには、developer.apple.comは20分または1時間の無活動の後に自動的にサインアウトします)、それは単にチェックするだけの簡単な方法ではありませんHTTPステータス/エラーコード。 – fullofsquirrels