2023. 2. 16. 21:41ㆍ👩🏻💻 ios 앱개발 ( swift )
🦴 optional
swift를 처음 배우는 사람들이 제일 혼란스러워하는 내용.. ( 매우 혼란스러워질 예정 )
🦴 optional이라는 개념은 어떤 상황에서 유용할까?
다음과 같은 상황을 보자
var name: String = "puang"
var dogName: String = "choco"
var carName: String = ?? // 차가 없다면 ?
boolean 변수를 사용해서 자동차 유무를 확인하는 방식도 있지만, 존재하지 않을 수도 있는 변수에 대해서 복잡한 확인과정을 거치는 건 비효율적이다. swift는 이러한 상황을 다루기 위해 optional이라는 개념 제공.
nil - 값이 없는 상황

박스에 물건이 들어있는 경우 = optional에 value가 들어있는 경우
박스 = optional
박스에 15가 들어있는 경우 = optional에 15가 들어있는 경우
? : 값이 있을 수도 있고 ~ 없을 수도 있고~
import UIKit
//optional
var carName: String?
carName = nil
//차가 생겼다!
carName = "lamborghini"


여기까지 기본적인 optional에 대한 내용이다.
🦴 optional의 고급 개념 4가지
- Forced unwrapping optional = 억지로 박스 열기
- Optional binding = 부드럽게 박스 열어보기
- Guard statement = 부드럽게 박스 열어보기 2탄 (feat. guard)
- Nil coalescing = 박스를 열었더니 값이 없으면 default 값을 줘보자


문제 : 변수의 값이 나오는 게 아니라 optional형태(상자)가 나옴.
- Forced unwrapping optional = 억지로 박스 열기
! : 박스 강제로! 열기 (unwrapping)
박스를 강제로 여는 행위는 최대한 지양해야함. 실무에서도 안쓰는 걸 추천

박스 안에 아무것도 없는데 열었다면?

경고메세지 : 대충 '아무것도 없는데 함부로 열지 말라' 는 뜻
앱이 죽는 crash를 방지하기 위해서는 좀더 부드럽게 박스를 열어야 함.
- Optional binding = 부드럽게 박스 열어보기





이 코드를 guard 를 이용해서 간단하게 만들 수 있다.
- Guard statement = 부드럽게 박스 열어보기 2탄 (feat. guard)

긴 코드가 들어오더라도 if 문 안에 중첩되지 않으므로 더 클린하게 코드를 짤 수 있다.
- Nil coalescing = 박스를 열었더니 값이 없으면 default 값을 줘보자


🦴 실습 예제
Q1. 최애 음식이름을 담는 변수를 작성하고 (String?), optional binding 을 이용해서 값을 확인해보기
Q2. 닉네임을 받아서 출력하는 함수를 만들어보기, 입력 파라미터 String?

'👩🏻💻 ios 앱개발 ( swift )' 카테고리의 다른 글
[swift] Closure (0) | 2023.02.22 |
---|---|
[swift] Collection (1) | 2023.02.17 |
[ swift ] Function (0) | 2023.02.14 |
[swift] switch문 (0) | 2023.02.13 |
[ swift ] for loop, import foundation, closedRange (0) | 2023.02.13 |