Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views :

[Swift] Optional

/
/
/
102 Views

Optional 이란

애플이 주장한 것처럼 스위프트는 타입-세이프한 언어이다.
런타임에서 발생할 수 있는 에러를 컴파일러에서 체크할 수 있고, 옵셔널은 그 중 하나의 방법이다.

애플은 변수/상수에 아무런 타입의 값이 할당되어 지지 않는 상황을 처리하기 위해 옵셔널을 도입했다.
변수/상수는 nil을 할당할 수 없기 때문에 ? 연산자를 붙여 nil 값을 할당 받을 수 있다.

Optional 사용방법

objc 언어처럼 변수/상수에 nil 을 할당하려고 하면 컴파일 에러가 발생한다.
? 연산자를 붙여 nil 을 받을 수 있는 변수/상수로 만들어야 한다.

Optional 선언
옵셔널은 아무 값도 할당하지 않으면 자동으로 nil 을 할당하게 된다.
? 연산자 대신 Optional 키워드를 사용하여 옵셔널을 선언할 수도 있다.

 

Unwrapped Optional

옵셔널을 사용할 때마나 if let 을 사용하여 바인딩하는 작업을 매번 하는 것은 바람직한 방법이지만, 번거로운 건 어쩔 수 없다.
그래서 옵셔널로 선언된 변수/상수를 강제로 벗겨서 사용할 수 있다.
강제로 벗긴 옵셔널이 만약 nil 값을 가지고 있다면 런타임에서 에러가 발생하기 때문에 주의해서 사용해야한다.


Optional Binding

스위프트 코딩을 하다보면 옵셔널 바인딩은 자주 사용하게 되고, 사용하지 않으면 안될 정도로 중요하다.
옵셔널 바인딩이란 옵셔널 값을 unwrapping 한뒤, 해당 값이 존재 한다면 다른 변수/상수에 대입시켜주는 것이다.


if let 또는 if var 를 사용하여 옵셔널 값을 unwrapping 해서 그 값이 존재한다면 if 블럭으로 들어가고 없으면 통과한다.

하나의 if 문에서 , 을 이용하여 여러개의 옵셔널을 바인딩 할 수 있다. 여러개를 바인딩 할때는 && 연산이 들어가는 점을 잊지말자.
그리고 두번째부터는 let 또는 var 를 생략 가능하다.

옵셔널 바인딩을 할때 where 키워드를 통해 조건을 지정할 수 있다. where 절은 unwrapping 된 옵셔널 값에 대해 비교하게 된다.

 

Optional Chaining

옵셔널 체이닝은 옵셔널로 선언된 변수/상수를 ? 또는 ! 로 연결하여 간단하게 사용할 수 있게 방법을 제공한다.

count 라는 값을 알기 위해서는 중첩 옵셔널 바인딩을 사용하여 if let 을 여러번 사용해야만 한다.
옵셔널 체이닝을 사용하면 이런 번거로운 작업을 한줄로 묶어서 간단히 구할 수 있다.만약 person.status 값이 nil 이면 그 다음 recode 검사를 하지 않고 nil 을 반환한다. 또한 ? 과 ! 는 차이점이 있다.
! 연산자는 Forced Unwrap 로써 강제로 옵셔널을 벗기는 것이다. person.status 값이 nil 이라면 ? 연산자와는 다르게 런타임 상에서 에러를 호출하게 되기 때문에 주의해서 사용해야한다.

Leave a Comment

이메일은 공개되지 않습니다.

This div height required for enabling the sticky sidebar