문제
API 호출을 하려고 하는데 문제 없는 URL String을 URL 객체로 변환하니까 자꾸 nil이 반환되는 문제가 있었다. 저번에는 됐는데 왜 된거지
암튼 검색해보니 주소에 한글이나 스페이스 등이 들어갈 때 nil이 될 수 있다고 한다.
역 이름 인자로 한글이 들어가기 때문에 이런 문제가 생겼던 것 같다.
해결
➡️ 인코딩을 해주면 해결할 수 있다.
- .addingPercentEncoding을 사용하면 인자로 지정된 CharacterSet에 명시되어 있지 않은 모든 Characters를 백분율로 인코딩된 문자로 바꿔준 뒤, String? 값으로 반환해준다.
let encodedURL = arrivalUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
인자로 지정해준 urlQueryAllowed 라는 놈은 URL에 사용하는 것이 허용된 문자들을 말하는 것 같다. 그래서 그 외의 문자인 한글을 URL에서 대응 가능하도록 인코딩해주는 것 같다.
( 설명 참고 : https://developer.apple.com/documentation/foundation/characterset#2902136 )
변경 결과
레퍼런스
https://zeddios.tistory.com/281
iOS ) String -> URL시 nil이 반환될 때
안녕하세요 :) Zedd입니다.오늘 어떤분의 에러를 찾다가 이런경우도 있구나 싶어서 글을 씁니다!!긴~~주소 String을 URL타입으로 바꾸는 과정에서, url이 nil이 되는 상황이 있는데요!!주소에 한글이
zeddios.tistory.com
https://hongssup.tistory.com/187
[Swift iOS] 한글 포함된 URL 인코딩하는 법 + url 디코딩
한글이 포함된 url string으로 URL 컨버팅을 해줄 경우, nil 값이 반환되는 문제가 발생했다. URL의 string: 은 영문, 숫자와 특정 문자만 인식 가능하고, 한글, 띄어쓰기 등은 인식하지 못한다고 한다.
hongssup.tistory.com
'iOS' 카테고리의 다른 글
[iOS] M1 맥북 + Xcode 15 환경에서 SwiftLint 적용 시 오류 처리 (0) | 2024.02.28 |
---|---|
[ iOS ] CustomStringConvertible 프로토콜 (0) | 2024.02.13 |
[ iOS ] 팀 작업 시에 Bundle Identifier 하나로 공유하기 (0) | 2023.08.27 |
[ iOS ] Watch Connectivity 사용해보기 (0) | 2023.08.08 |
[ iOS ] Core Motion 사용해보기 (0) | 2023.08.08 |