728x90
반응형
👩🏻💻 2020/12/05 ~ 스위프트 옵셔널에 대해 공부하기
☄️ Check for Nil Value
nil 인지 아닌지 값을 체크해주는 과정을 통해 옵셔널을 언래핑해준다.
struct CalculatorBrain {
var bmi : Float?
mutating func calculateBMI(height : Float, weight : Float) {
bmi = weight / (height * height)
}
func getBMIValue() -> String {
if bmi != nil {
let bmiValue = String(format: "%.1f", bmi!)
return bmiValue
} else {
print("bmi 는 nil입니다.")
return "0.0"
}
}
}
위 코드는 BMI를 계산해주는 struct로,
bmi 라는 프로퍼티의 타입이 Float? 일 때,
getBMIValue() 라는 함수가 bmi 프로퍼티를 사용하는 경우에 옵셔널을 체크하는 과정이다.
간략하게 요약하면 IF/ELSE문을 통해서 bmi 가 nil인 경우와 아닌 경우를 나눠서 출력한다.
if bmi != nil {
bmi! // nil 이 아닌 경우 !를 사용해 언래핑
} else {
print("bmi는 nil")
}
☄️ Optional Binding (옵셔널 바인딩)
if let 을 통해 nil 인지 아닌지 확인하는 것
func getBMIValue() -> String {
if let safeBMI = bmi {
let bmiValue = String(format: "%.1f", safeBMI)
return bmiValue
} else {
print("bmi 는 nil입니다.")
return "0.0"
}
}
bmi 에 값이 있으면 safeBMI 를 사용하는 것
☄️ Nil Coalescing Operator (nil 병합 연산자) = ??
?? 이라는 nil 병합 연산자를 사용해 옵셔널 값인지 아닌지 체크하는 방법으로 가장 간단하다.
예를 들어, 아래와 같은 코드가 있을 때
mysteryValue가 옵셔널 값인데 nil이 아닐 경우에는 mysteryValue를 언래핑하여 출력하고, nil일 경우에는 defaultValue를 출력한다.
mysteryValue ?? defaultValue
func getBMIValue() -> String {
let bmiValue = String(format: "%.1f", bmi ?? 0.0)
return bmiValue
}
bmi ?? 0.0 에서 [ bmi 값을 추출 시에 nil 이면 0.0을 출력하고 ] // [ bmi 값이 nil 이 아니면 bmi 를 언래핑 해서 출력한다 ]
☄️ Forced Unwrapping (강제 언래핑)
! 를 붙여주어 강제로 언래핑하는 방법
nil 일 경우에 오류가 발생하기 때문에 nil이 아님을 확신할 수 있는 경우에만 사용해야 한다.
728x90
반응형
'⭐️ 개발 > iOS & Swift' 카테고리의 다른 글
[iOS] Object Library란? (그리고 하나하나 오브젝트에 대해) (0) | 2021.01.30 |
---|---|
[iOS] info.plist란? (그리고 하나하나 속성 정리) (0) | 2021.01.30 |
[iOS] Project editor란? (0) | 2021.01.30 |
[Swift] Closure 클로저란? (0) | 2020.12.16 |
[iOS] - 소수점 x자리 아래로 자르는 방법 (1) | 2020.12.04 |