2016-07-21 13 views
0

JSONからPDFを保存しています。私が確認するために、アプリケーションのドキュメントディレクトリ内のファイルのパスに移動すると、私は右のファイルを持っている、とPDFを開こうと、私はPDFを開くことができない、と私はこのエラーを取得する:PDFをドキュメントに保存する(PDFは壊れています)

enter image description here

enter image description here

ファイルパスは良好ですが、ドキュメントは存在しますが、破損しています。私はこれが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)

+0

コンソールログの内容(具体的には、表示されたログ記録の結果)を表示できますか?また、 'PDFData'をログすると、データの長さ(つまり' pdfData.length')も記録できますか?また、興味深い内容が表示されない場合は、より単純な 'dataWithContentsOfURL:'の代わりに 'dataWithContentsOfURL:options:error:'を使用して、データを実際にダウンロードしているかどうかを確認してください。 – fullofsquirrels

+0

@fullofsquirrels問題はありません。コンソールログを追加しました。何か目立つものはありますか? – SRMR

+1

デベロッパーアカウントでログインしていないとURLがロックされているようです。最初にサインインしたときに、このページにリダイレクトされました:https://developer.apple.com/unautifiedized/ おそらく、署名されていないユーザーを処理する方法を整理する必要があります自分の開発者のアカウントに追加する必要があります(さらに、複雑なものにするためには、developer.apple.comは20分または1時間の無活動の後に自動的にサインアウトします)、それは単にチェックするだけの簡単な方法ではありませんHTTPステータス/エラーコード。 – fullofsquirrels

答えて

1

はURLのように見える何がロックされていないがありました;最初にサインインしてから試してみましたが、私はこのページにリダイレクトされました:developer.apple.com/unauthorized。内容は、あなたが期待しているように、純粋なHTMLであり、HTMLを送信すると、ほとんどの場合PDFのパーサがクラッシュすると思います。

開発者アカウントにログインしていないユーザーを処理する方法をソートする必要があります(さらに、複雑にするために、developer.apple.comは20数分または1時間の休止状態)、HTTPステータス/エラーコードを確認するだけでは簡単ではないように見えます。

関連する問題