잡초의 일지

[Swift] Optional 옵셔널 본문

[코딩] 배우는것/Swift

[Swift] Optional 옵셔널

JabCho 2020. 7. 8. 19:48
728x90
반응형
SMALL

이전에 했던 optional에 대한 포스팅. 

https://alicecodealice.tistory.com/7

 

[Swfit] Optional 해결방법

앞서 optional이 왜 일어나는지 알아봤다.(nil때문..) 그럼 해결방법은? 간단하게 말하자면 강제 언랩핑(Forced Unwrapping) , 옵셔널 바인딩(Optional Binding) , 옵셔널 체이닝(Optional Chaining)이 있다. 1...

blog.kim-gaeun.com

 

 

옵셔널

옵셔널은 값이 있을수도 있고 없을수도 있음(nil)을 표현한 형태이다.

코드

import UIKit

var carName: String? = "뚜벅이"
carName = nil
carName = "람보르기니포르쉐마세라티"

 

옵셔널 고급기능

1. 강제 언래핑 (Forced unwrapping)

// Forced unwrapping >> 강제로 박스 열기
print(carName!)

 

2. 옵셔널 바인딩 (Optional binding) - if let

// Optional binding (if let 사용) >> 부드럽게 박스 열기 - 1
if let unwrappedCarName = carName {
    print(unwrappedCarName)
}else{
    print("car Name 없다")
}
//parsing 해서 casting 한 결과가 옵셔널일 수 있다.
func printParsedInt(from: String){
    if let parsedInt = Int(from){           //Cyclomatic complexity (복잡도)
        print(parsedInt)
    }else{
        print("Int로 컨버팅 안된다.")
    }
}
printParsedInt(from: "100")
printParsedInt(from: "hello~~!")

 

3. 옵셔널 바인딩 (Optional binding) - guard

// Optional binding (guard 사용) >> 부드럽게 박스 열기 - 2
func printParsedInt(from: String){
    guard let parsedInt = Int(from) else {      //복잡도 줄일 수 있는 방법. guard 사용. guard조건 만족안하면 아래 실행.
        print("Int로 컨버팅 안된다.")
        return
    }
    print(parsedInt)
}
printParsedInt(from: "100")
printParsedInt(from: "hello~~!")

 

4. Nil coalescing

// Nil coalescing >> 박스를 열었더니, 값이 없으면 디폴트 값을 준다.
carName = "나의자동차"     // --> carName에 "나의자동차"라는 값을 주면
						  //	nil이 아니므로 "나의자동차" 출력됌.
let myCarName:String = carName ?? "뚜벅이와 대중교통"        //박스 열어서 값이 없으면 디폴트 값을 준다.

 

 

코드 연습

let favoriteFood: String? = "탄산수"

if let food = favoriteFood {
    print(food)
}else{
    print("좋아하는 음식이 없어")
}

let nickname:String? = "잡초"
//let nickname:String? = nil
func pirntNickname(name:String?){
    guard let nickName = name else {
        print("별명이 없네")
        return
    }
    print("별명은 \(nickName)")
}
pirntNickname(name: nickname)
728x90
반응형
LIST

'[코딩] 배우는것 > Swift' 카테고리의 다른 글

[Swift] Collection : Dictionary  (0) 2020.07.09
[Swift] Collection : Array  (0) 2020.07.09
[Swift] function 함수 만들기  (0) 2020.07.08
[Swift] Tuple 튜플 사용  (0) 2020.07.07
[Swift] where의 사용  (0) 2020.07.07
Comments