최근에 Web View를 사용하여 웹 페이지를 보여주는 작업을 하고 있었다.
text field에 입력을 받아 입력이 url 형식에 맞는 경우 해당 웹 페이지로 이동 하도록 하고 url 형식에 맞지 않으면 google query url을 사용하여 google 검색으로 바로 넘겨 주도록 구현하려고 했다.
구현을 마치고 "네이버"를 텍스트 필드에 입력하여 google 검색으로 넘어가려는데 앱이 멈추고 xcode에 오류가 발생하였다.
찾아보니 한글은 유니코드이기 때문에 URL 타입 변환시 nil을 반환하여 오류가 났던것.
해결하기 위해서는 한글을 url로 인식하도록 해야 한다.
func loadWebPage(_ url: String) {
let encodedString = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
let myUrl = URL(string: encodedString)
...
}
해결 방법은 위와 같다.
String 타입의 addingPercentEncoding
메서드를 사용하여 url로 인식할 수 없는 문자를 인코딩한 새로운 문자열을 반환하도록 한다. 메서드 내부 parameter로 전달되는 urlQueryAllowed
는 query url로 인식할 수 있는 문자열로 반환할 수 있도록 한다.
인코딩을 마치고 새롭게 반환된 문자열을 URL 타입으로 변환하며 Web View를 불러 올 수 있도록 한다.