티스토리 뷰
URL 스트링에 한글이나 공백 때문에 인식이 안되서 URL(string: )을 하면 nil이 되는 경우가 있다.
이 경우에는 한글을 인코딩해주어 URL을 보내야한다.
스위프트에서 NSString의 인스턴스 메서드인 addingPercentEncoding(withAllowedCharacters:)를 사용할 수 있다.
이 메서드가 하는 일은 지정된 세트에 없는 모든 문자를 퍼센트로 인코딩 된 문자로 바꾸어 새로운 문자열을 반환해주는 함수이다.
퍼센트 인코딩이란 URL 관련해 특정 의미 있는 문자를 인코딩하는 메커니즘이며, URL 인코딩이라고도 한다.
% 뒤에 대체 문자의 ASCII 값을 16진수로 표시한다.
파라미터인 allowedCharacters로 사전 정의된 세트 중 하나를 지정해서 전달한다.
여기서 말하는 세트란 NSCharacterSet를 말하며 유니코드 호환 문자 집합을 나타낸다.
여기서 원하는 세트를 지정한 후 인코딩이 성공하면 문자열을 리턴하고 변환 불가한 경우 nil을 리턴한다.
나는 이미지 url에 한글이 포함되어 있었기 때문에 URL화 하는 과정에서 nil이 발생했다.
한글을 인코딩해주는 작업이 필요했기 때문에 addingPercentEncoding(withAllowedCharacters:)를 사용해서 해결할 수 있었다.
guard let encoding = cosmetic.image.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed), let image = URL(string: encoding) else {
return
}
주의할 점
퍼센트 인코딩 된 문자열에서 이 메서드를 호출하면 안 된다.
퍼센트 인코딩 된 문자가 두 번 퍼센트 인코딩 되기 때문이다.
resources :
https://developer.apple.com/documentation/foundation/nsstring/1411946-addingpercentencoding
https://developer.apple.com/documentation/foundation/nscharacterset
'Tech > Troubleshooting' 카테고리의 다른 글
Xcode 시작 화면 띄우기 (0) | 2020.01.10 |
---|---|
ViewController Presentation style (0) | 2019.12.05 |
Build input file cannot be found 에러 해결 (2) | 2019.11.28 |
timezone 활용하기 (0) | 2019.08.07 |
Missing required module 'Firebase' 에러 해결 (0) | 2019.07.21 |
- Total
- Today
- Yesterday
- 애니메이션
- Xcode
- iOS SwiftUI
- 문자열
- RX
- ARC
- stanford SwiftUI
- 책
- leetcode
- SWIFT
- 머신러닝
- Deep learning
- string
- wwdc
- 딥러닝
- rxswift
- objective-c
- swift5
- swiftUI
- 책 후기
- Animation
- 독서
- 알고리즘
- ios
- ReactiveX
- objc
- Algorithm
- 스위프트UI
- 스위프트
- 책 추천
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |