2016-11-30 12 views
0

ドキュメントのディレクトリに保存し、Webビューで読み込む際に、pdfのダウンロードに問題があります。 私は、ディレクトリやUIWebViewに物事を保存する前に、ダウンロードしたことに関する経験はありません。PDFをダウンロードし、ドキュメントディレクトリに保存し、UIWebViewに読み込みます。

私はこの質問をする前に、私は複数のStackOverflowの質問を検索し、ベストを尽くしましたが、それでも動作しません。

まずこれは私がURLからPDFをダウンロードし、アプリケーションしばらく一時停止し、プリント

let myURL = URL(string: "https://example/example/product.pdf") 
let urlRequest = NSURLRequest(url: myURL!) 

do { 
    let theData = try NSURLConnection.sendSynchronousRequest(urlRequest as URLRequest, returning: nil) 
    var docURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)).last as? NSURL 
    docURL = docURL?.appendingPathComponent("my.pdf") as NSURL? 
    try theData.write(to: docURL as! URL) 
    print("downloaded") 
} catch (let writeError) { 
    print("error : \(writeError)") 
} 

ディレクトリを文書化するためにそれを保存する方法ですが

「をダウンロードした」これは私がチェックする方法です私の文書ディレクトリ内の連絡先リスト

let docURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last) 
     do{ 
      let contents = try (FileManager.default.contentsOfDirectory(at: docURL!, includingPropertiesForKeys: nil, options: FileManager.DirectoryEnumerationOptions.skipsHiddenFiles)) 
      print("There are") 
      print(contents) 
     } 
     catch (let error) 
     { 
      print("error contents \(error)") 
     } 

It p "あります[ファイル:///private/var/mobile/Containers/Data/Application/DF6A310C-EB7E-405E-9B1B-654486B5D03A/Documents/my.pdf]" rints

これは私がどのようにロードされますWebViewの

​​

へのPDFのWebViewはアップしますが、何も表示されません。 my.pdfが実際に読みやすいPDF形式で保存されていると、私は本当に混乱しています。

info.plistに何かを追加したり、アプリの機能を有効にしなければならないようなものがあるかどうかわかりません。どうもありがとうございました。

+0

'NSURLConnection'は廃止され、使用' NSURLSession'今 – Rajat

+0

こんにちは@thura ooに私はそのように答えとして、あなたの作業コードを与えるためにあなたを要求し、可能な場合:これは私が提案したコードが今なければならないことを意味し誰かが助けを得たり、それから学ぶことができます。私の場合私はあなたと同じシナリオを持っていますが、このステップをどのように行うかを理解することはできません。あなたのコードで私を助けてください。事前にありがとうございます。 – deltami

答えて

1

私は、コードのすべてを見ていないが、以下の2行は問題である:

var filePath = URL(fileURLWithPath: documentsDirectory).appendingPathComponent("my.pdf").absoluteString 
var targetURL = URL(fileURLWithPath: filePath) 

filePathの値が有効ではありませんので、URL absoluteStringの値は、あなたのファイルパスを与えるものではありませんURL fileURLWithPath:イニシャライザの値です。

URLからString(パスとして)からURLに戻るのは何ですか?これら2つの線を組み合わせるだけで、次のようになります。

var targetURL = URL(fileURLWithPath: documentsDirectory).appendingPathComponent("my.pdf") 

補足として、一貫性を使用してください。他のコードでは、使用してドキュメントフォルダのURLを取得:

使用
let docURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last) 

およびその他のコードで:

var paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) 
var documentsDirectory = paths[0] 
var ... = URL(fileURLWithPath: documentsDirectory)... 

は、一つのアプローチを選択し、それを一貫して使用します。 URLが必要なので、最初の方法を使用してください。

別にあなたの質問から
let docURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last! 
let targetURL = docURL.appendingPathComponent("my.pdf") 
+0

これらのコード行は私には新しいものであり、私は本当にそれらを書き留めてしまった。私はあなたが言ったようにして、それは今働く。どうもありがとうございました。 –

+0

こんにちは@rmaddyあなたは1)ディレクトリを作成する方法2)どのように新しく作成されたディレクトリ内のURLからpdfファイルを保存する方法3)どのようにそのディレクトリからPDFファイルを共有する4)共有後にそのディレクトリを削除します。助けてください。あなたが私に質問して欲しいのなら、これもやってください。 – deltami

関連する問題