APP/Swift
ios 개발을 위한 swift 문법 배우기 : 옵셔널
개발자 aloe
2022. 8. 25. 15:24
728x90
옵셔널
스위프트 핵심 개념중 하나
값이 있을수도, 없을수도 있음
옵셔널이 아닌 상수에다가 nil 값 넣으려고 하면 오류남
let someConstant: Int = nil 오류남
왜 옵셔널이 필요한가
nil의 가능성을 명시적으로 표현
• nil 가능성을 문서화 하지 않아도 코드만으로
충분히 표현가능
• 문서/주석 작성 시간을 절약
• 전달받은 값이 옵셔널이 아니라면 nil체크를
하지 않더라도 안심하고 사용
• 효율적인 코딩
• 예외 상황을 최소화하는 안전한 코딩
let optionalValue: Optional<Int> = nil 아래 처럼 줄여 사용 가능
let optionalValue: Int? = nil
옵셔널 표현방법음 ?, ! 2가지가 있음
//MARK:- 암시적 추출 옵셔널
// Implicitly Unwrapped Optional
var implicitlyUnwrappedOptionalValue: Int! = 100
switch implicitlyUnwrappedOptionalValue {
case .none:
print("This Optional variable is nil") // 값이 없으면
case .some(let value):
print("Value is \(value)") // 값 이 있으면
}
// 기존 변수처럼 사용 가능
implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue + 1
// nil 할당 가능
implicitlyUnwrappedOptionalValue = nil
// 잘못된 접근으로 인한 런타임 오류 발생
//implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue + 1 // nil 에 1더할수 없음
//MARK:- 옵셔널(일반)
// Optional
var optionalValue: Int? = 100 //(인트값이 있을수도 없을수도 있다는 뜻)
switch optionalValue {
case .none:
print("This Optional variable is nil")
case .some(let value):
print("Value is \(value)")
}
// nil 할당 가능
optionalValue = nil
// 기존 변수처럼 사용불가 - 옵셔널과 일반 값은 다른 타입이므로 연산불가
// 아에 다른 데이터 타입과 연산이 안됨 nil이 아니더라도
//optionalValue = optionalValue + 1
728x90