스위프트에서는 값을 처리하는 과정에 문제가 있을 경우 많은 부분에서 오류를 발생시키는 대신 결과값을 nil로 반환한다.
오직 옵셔널 타입만 nil을 반환할 수 있다.
스위프트에서는 nill 을 반환하는 함수 작성시에 오류가 발생하고, 대신 옵셔널을 반환하는 함수를 작성해야 한다.
옵셔널 타입이란, 반환하고자 하는 값을 옵셔널 객체로 다시 한 번 감싼 형태를 의미한다.
Optional(123)
옵셔널에서 받은 실제값을 추출하는 과정을 옵셔널 언래핑(Optional Unwrapping) 이라고 한다.
var optInt : Int?
var optStr : String?
var optDouble : Double?
var optArr : [String]?
var optDic : Dictionary<String, String>?
var optDic2 : [String:String]?
var optClass : AnyObject?
optInt = 3
//일반 변수처럼 값을 할당하면 옵셔널 객체 내부의 값이 대입된다.
Int("123") + Int("123") //옵셔널 타입은 결합 연산 또는 더하기 연산이 가능한 데이터 타입이 아니다.
Int("123") + 30 //Int? 와 Int 는 서로 다른 타입이므로 연산이 불가능하다.
옵셔널 객체를 해제하고 내부에 있는 값을 추출하는 과정을 **옵셔널 해제(Optional Unwrapping)**라고 한다.
옵셔널 해제 방식은 명시적 해제와 묵시적 해제로 나뉘어 진다.