2016-09-16 4 views
4

문자열 초기화를 사용할 때 URL 초기화 프로그램 (문자열 : "")이 올바르게 초기화되지 않는 것 같습니다. 내가URL 및 문자열 보간

let url = URL(string: "http://192.168.1.1") 

작동 같은 것을 사용하지만,

let host = "192.168.1.1" 
let url = URL(string: "http://\(host)") 

하지 않은 및 URL = 무기 호를 다음과 같은 경우 문제가있다.

놀이터에서 둘 다 작동하지만 코드에는 작동하지 않습니다. 가변 호스트가 제대로 설정되었는지 다시 한 번 확인했습니다.

아이디어가 있으십니까?

+0

'놀이터에서 모두 작동하지만 코드에는 작동하지 않습니다.'그 이유는 없습니다. 앱에서 동일하게 작동해야합니다. 내 생각 엔 다른 곳에 다른 문제가 있다는 것입니다 - 또는 당신의 가치가 당신이 생각하는 것과 다르다는 것입니다, 디버거로 확인하십시오. – Moritz

+0

어제 Swift3로 코드를 마이그레이션 할 때까지는 NSURL을 사용하기 전에 오랜 시간 동안 작업했습니다. – user2754787

+0

테스트 응용 프로그램에서 Swift 3을 사용하면 저에게 적합합니다. [스크린 샷] (https://www.evernote.com/l/AOw6OBs-sdlFl6y0v4DPhjPGwtfBzMNp2lI) – Moritz

답변

0

저는 빠른 세계에서 아주 새로운데, 저도 그 문제가 있었고, 제 경우에는 다른 클래스에서 상수 URL을 선언하고 신속하게 오류로 소리 치지 않았다고 선언했습니다. 따라서 var를 두 번 선언하면 검색 할 수 있습니다.

6

비슷한 문제가있었습니다.

이 스위프트 2에서 일하지만 스위프트 3 (I 페이스 북 & 페이스 북 메신저와 유사한 우리의 애플 리케이션, 2 사이에 바운스)에 파산 :

var userId: Int! 
var userType: String! 

// userId and userType are set by some code somewhere else... 

if let url = URL(string: "anotherappicreated://?userId=\(userId)&userType=\(userType)") { 
    UIApplication.shared.openURL(url) // Open our other app 
} 

스위프트 2에서 선언 암시 적으로 풀어 선택적 항목 (변수를!) 그들을 풀지 않고 일했다. 스위프트 3에서는 명시 적으로 옵션을 언랩해야합니다 :

var userId: Int! 
var userType: String! 

// userId and userType are set by some code somewhere else... 

if let userId = userId,  // <-- HAD TO ADD THIS 
    let userType = userType, // <-- AND THIS 
    let url = URL(string: "anotherappicreated://?userId=\(userId)&userType=\(userType)") { 
    UIApplication.shared.openURL(url) // Open our other app 
}