2016-11-30 4 views
0

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

이 내가로드하는 방법입니다 웹보기

var webView = UIWebView(frame : vc.view.frame) 
webView.scalesPageToFit = true 
var paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) 
var documentsDirectory = paths[0] 
var filePath = URL(fileURLWithPath: documentsDirectory).appendingPathComponent("my.pdf").absoluteString 
var targetURL = URL(fileURLWithPath: filePath) 
var request = URLRequest(url: targetURL) 
webView.loadRequest(request) 
vc.view.addSubview(webView) 

에 PDF는 웹보기가 나타나지만 아무것도 표시되지 않습니다. my.pdf가 실제로 읽을 수있는 PDF 형식으로 저장되면 정말 혼란 스럽습니다.

info.plist에 무언가를 추가하거나 앱 기능에서 무언가를 사용해야하는 것과 같은 것들이 있는지 알 수 없습니다. 고맙습니다. filePath의 값이 유효하지 않습니다 있도록

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

URL absoluteString의 가치는 당신에게 파일 경로를 제공하지 않습니다

+0

'NSURLConnection'이되지 않습니다 사용'NSURLSession' 지금 – Rajat

+0

안녕 @thura oo의 내가 있도록 답변으로 사용자의 작업 코드를 제공하여 주시기 바랍니다 가능한 경우 : 이것은 내가 제안 코드가 지금해야 의미 누군가가 도움을 받거나 그것으로부터 배울 수 있습니다. 제 경우에는 당신과 같은 시나리오를 가지고 있지만이 단계를 수행하는 방법을 알 수는 없습니다. 귀하의 코드로 도와주세요. 미리 감사드립니다. – deltami

답변

1

나는 모든 코드 그러나 다음 두 라인을 통해 보이지 않았다 문제가 있습니다 URL fileURLWithPath: 이니셜 라이저의 값입니다.

그리고 URL에서 String (경로로)에서 다시 URL으로가는 시점은 무엇입니까? 다음 두 줄을 결합하면됩니다.

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 파일을 저장하는 방법 2) 3) 공유하는 방법을 공유 후 PDF 파일을 공유하는 방법 해당 디렉토리를 삭제하십시오. 제발 도와주세요. 당신이 나에게 질문하기를 원한다면, 이것을 위해서도 할 것입니다. – deltami