2017-06-09 6 views
-3

背景スウィフトエラー処理文字列にファイルを変換する

私はWebViewのからファイルをダウンロードしたアプリケーションを書いています。ファイルがダウンロードされると、問題がないかどうかを確認しています。

問題

私は悪名高い

コールを投げることができますが、それが「してみてください」でマークされていない取得データを操作できるように文字列にファイルを変換しようとすると、そして、エラーが は、私は、エラーを処理する方法を見つけ出すことを試みたが、私は、私は、変数を作成しています方法の文脈で考える

を取り扱いしておりません、私はこの作業を完了するための理解が不足しています。

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { 

      if let url = navigationAction.request.url, url.lastPathComponent == "mydata.do" { 
       FileDownloader.download(from: url) { filepath in 
        let filemgr = FileManager.default 

        if filemgr.fileExists(atPath: filepath) { 
     // this line throws error 
let content = String(contentsOfFile: filepath, encoding: String.Encoding.utf8) 
         print(content) 
        } else { 
         print("FILES DOES NOT EXIST!") 
        } 
       } 
       decisionHandler(.cancel) 
      } else { 
       decisionHandler(.allow) 
      } 
     } 

質問

文字列がになります文字列にファイルを読み込み、変数を作成するときにエラーを処理するための適切な方法は何ですか?私の場合、content

let content = String(contentsOfFile: filepath, encoding: String.Encoding.utf8) 
+1

このメソッドのドキュメントを読む必要があります:https://developer.apple.com/documentation/foundation/nsstring/1412610-initとディスカッションのエラーを管理する方法を示す部分 – Larme

答えて

1

あなたはtrydo-catchブロックにコードとがある場合errorをキャッチラップする必要がありますどの:

do { 
    let data = try String(contentsOfFile: filepath, encoding: String.Encoding.utf8) 
    print(data) 
} catch let error as NSError { 

} 

You'llおそらく、エラーを削除しますtry!でこの構文を参照してくださいが、エラーが発生するとクラッシュするので、do-catchソリューションをお勧めします。

関連する問題