옵셔널
var myname: String = "KIM"
myname = nil
//오류
var mynaem: String? = "KIM"
myname =. il
print(myname)
//nil
위 코드는 오류가 난다. nil은 옵셔널로 선언된 곳에서만 사용이가능하다.
옵셔널의 값을 옵셔널이 아닌 값으로 추출하는 것을 옵셔널 추출이라고 한다.
가장 간단하지만 가장 위험한 방법이다. (런타임 오류 가능성이 가장 높음)
강제 추출하기 위해서는 옵셔널 뒤에 !를 붙여주면 강제로 추출하여 반환한다. nil이라면 오류가 발생한다.
-> 오류 가능성을 내포하기에 지양해야하는 방식
옵셔널에 값이 있는지 확인할 때 사용한다. 만약 값이 있다면 추출한 값을 일정 블록 안에서 사용할 수 있는 상수나 변수로 할당해서 옵셔널이 아닌형태로 사용할 수 있게 해준다.
-> if나 while구문 등과 결합하여 사용할 수 있다.
var myname: String? = "Kim" //?를 통해 옵셔널 바인딩으로 임시 상수 할당
if var name = myname{ //임시 변수 할당
-> if 구문 안에서만 name이라는 임시 변수or상수를 사용할수 있다. else나 외부에서는 불가능
nil을 할당하고 싶으나 매번 바인딩을 통한 값 추출이 힘들고, 런타임 오류가 발생하지않는 확신이 있을때 사용한다. ?대신 !를 사용하면 된다.
nil을 할당할 수 있지만 접근하려고하면 런타임 오류가 발생한다.
->이 방법또한 안전하지 않다.