if let, guard let, nil 병합 연산자를 이용한 Optional Unwrapping을 알아보겠습니다.
예시 코드는 이전의 이모지 문자 인코딩을 이용하여 하겠습니다.
1. if let
- 조건의 Optional의 값이 nil인지 확인 하여 분기 처리
- 지역변수로만 사용 가능
// nonLossyASCII > utf8
func enc(_ inputStr:String) -> String{
let data = inputStr.data(using: .nonLossyASCII, allowLossyConversion: true)!
// Optional변수의 값이 nil인 경우에는 eles를 실행
if let outputStr = String(data: data, encoding: .utf8){
return outputStr
} else{
print("Encoding Failed")
return ""
}
}
2. guard let
- 조건이 true일때 전역 변수로 사용
- 조건이 false일때 else를 실행하여 따로 상위 코드 블럭을 종료 시켜줘야함(return, break, throw ...)
// nonLossyASCII > utf8
func enc(_ inputStr:String) -> String{
let data = inputStr.data(using: .nonLossyASCII, allowLossyConversion: true)!
// Optional 변수의 값이 nil인 경우에는 else부분을 실행하여 상위 코드 블럭을 빠져나간다
guard let outputStr = String(data: data, encoding: .utf8) else {
print("Encoding Failed")
return ""
}
return outputStr
}
3. nil coelescing operator(nil 병합 연산자)
- (옵셔널변수) ?? (nil인 경우 일반 값)
- nil이 아니라면 unwrapping을 하고, nil인 경우에는 일반 값을 넣어준다
- 가장 간단하게 unwrapping
// nonLossyASCII > utf8
func enc(_ inputStr:String) -> String{
let data = inputStr.data(using: .nonLossyASCII, allowLossyConversion: true)!
// Optional 변수의 값이 nil인 경우 ?? 우측의 일반 값으로 unwrapping
let outputStr = String(data: data, encoding: .utf8) ?? ""
return outputStr
}
'Swift개발' 카테고리의 다른 글
[Swift]class, struct 간단 비교 (0) | 2022.05.17 |
---|---|
[Swift]GoogleMap API, 현재 지도뷰의 중심 좌표 가져오기 (0) | 2022.05.16 |
[Swift]Emoji 포함 문자 인코딩, 디코딩 (0) | 2022.05.11 |
swift) Int를 UILabel에 띄어주는 법(Int to String, "\()") (0) | 2019.06.05 |
[Swift5]UILabel 글자띄우기 초간단 영상강좌(UILabel - 1편) (0) | 2019.06.04 |