2016-10-13 6 views
0

Swift 응용 프로그램에서 pdf를 열려고하는데 작동하도록 만들 수 없습니다.Swift에서 버튼을 클릭하면 어떻게 PDF 링크를 열 수 있습니까?

UIApplication.shared.openURL(URL(string: "http://www.url.com" + id)!) 

그러나 나는 다음과 같은 오류가 점점 오전 :

fatal error: unexpectedly found nil while unwrapping an Optional value

그래서를

나는 그들이이 코드를 사용 대부분이와에 관련된 많은 질문이 있다는 것을 알고 오류가 있다고 생각했는데 id이 0이 아니므로 두 개를 만들었습니다. 과 id 중 하나를 검색했는지 확인하기 위해 prints을 검색했습니다. 그들 모두는 정확하고 브라우저 네비게이션 바에 URL을 복사하면 완벽하게 작동합니다 (클라이언트이기 때문에 실제 url을 제공 할 수 없습니다).

이 함수는 @IBAction 안에 래핑되어 버튼이 클릭되었을 때를 감지하므로 연결이 끊어진 경우 보았습니다. 그것은 또한 정확합니다.

이 오류가 발생하는 이유를 이해할 수 없습니다. 몇 시간을 보냈지 만이 오류의 원인을 파악할 수 없습니다.

이 나는 ​​뭔가를 놓치고 있습니까? 나는 어떤 식 으로든 그 목록을 성문화해야합니까?

피씨 : 나는 Xcode8Swift3을 사용하고 있습니다.

업데이트 : 내가 www.google.es으로 설정하면 완벽하게 작동합니다. 그것은 URL 내부 변수를 사용하여 문제가 될 수 있습니까?

미리 감사드립니다.

+1

원인을 볼 수 있도록 코드를 분할하십시오. 문자열을 먼저 작성하십시오. 그런 다음 'URL'을 만듭니다. 그런 다음'openURL'을 호출하십시오. 그렇다면 진정한 이유를 찾을 수 있습니다. – rmaddy

+0

'URL (string : mystring) '을 사용할 때'nil' 값을 주지만 브라우저 탐색 바에 url을 복사하면 작동합니다. –

답변

0

마지막으로, 문제에 대해 검색하고 @rmaddy (감사합니다!)의 권장 사항을 따른 후 몇 시간이 지나면 필자의 기능이 세 부분으로 나뉘어 URL이 nil 값을 반환하고 있음을 알 수 있습니다.

브라우저 탐색 모음에 문자열을 복사 할 수있어 이상하게 여겨져 인코딩이 잘 될 수 있다고 생각했습니다. 한 번 내가 그것을 인코딩했습니다 id의 마지막에 \r와 함께 PDF의 id가 검색된 것으로 나타났습니다. 이처럼 : 링크가 더 이상 작동하지하지 않을 경우 때문에

var string = "http://www.url.com" + id 
var index1 = string.index(string.endIndex, offsetBy: -1) 
var substring1 = string.substring(to: index1) 

let encodedString = substring1.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) 
UIApplication.shared.openURL(NSURL(string: encodedString!) as! URL) 

인코딩 된 문자열이 필요합니다 :

id004.pdf\r 

내가 수행 한이 솔루션은 다음과 같다.