입력 한 URL에 대한 다양한 API에서 데이터를 가져 오는 브라우저를 구축하고 있습니다. 기본 컨트롤이 모두 실행되고 있지만 사용자가 URL을 입력하지 않으면 URL 시작 부분에 'HTTP : //'를 추가하려는 일부 코드에 난처합니다.
func loadAddressURL(URLpath: String) {
//add 'http' if not entered.
var first4 = Range(start: URLpath.startIndex,
end: advance(URLpath.startIndex, 4))
var URL = URLpath
println(URL)
if URLpath.substringWithRange(first4) != "http" {
var URL = "http://" + URLpath
println(URL)
}
println(URL)
let requestURL = NSURL(string: URL)
let request = NSURLRequest(URL: requestURL!)
webview.loadRequest(request)
}
첫 번째 인쇄에서는 사용자가 입력 한 URL이 들어옵니다. If 문의 두 번째 print 문은 예상대로 'HTTP : //'가 추가 된 값을 표시하지만 if 문이 완료된 후 URL Var은 사용자가 입력 한 원래 문자열로 돌아가고 이유를 알아낼 수 있습니다. 어떤 아이디어?
문제는 변수 범위에 있습니다. 코드를 보면 함수 내 최상위 수준에서 변수 URL을 정의합니다. 그런 다음 접두사를 비교하고 http를 추가 한 다음 if 문 안에 새 변수를 정의합니다 (지금 범위가 지정됨). 따라서 if 외부의 URL 변수는 if 내부의 변수와 다르므로 URL 변경 사항은 if 문 외부에서 볼 수 없습니다.
간단하게 다음과 같이 변경하면 괜찮습니다.
func loadAddressURL(URLpath: String) {
//add 'http' if not entered.
var first4 = Range(start: URLpath.startIndex,
end: advance(URLpath.startIndex, 4))
var URL = URLpath
println(URL)
if URLpath.substringWithRange(first4) != "http" {
URL = "http://" + URLpath
println(URL)
}
println(URL)
let requestURL = NSURL(string: URL)
let request = NSURLRequest(URL: requestURL!)
webview.loadRequest(request)
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다