-
[Swift/Study] 옵셔널 추출Study/ios 2023. 6. 28. 16:13
저번 글에서 옵셔널이 뭐하는 친구인지 알아보았다.
https://eunduk2.tistory.com/18
이번 글에서는 옵셔널을 사용하기 위해 옵셔널 추출을 해보려 한다.
옵셔널은 일반 데이터 타입과 같은 친구처럼 보이지만 엄연히 다른? 특별한 친구이다.
옵셔널 추출은 크게 두가지로 나뉜다.
첫 번째는 강제로 추출하는 것이고 두 번째는 물어보고? 안전하게 추출하는 방법이다.
이해를 돕기 위해 예를 들어보겠다.
옵셔널이라는 닫혀있는 상자가 있고 상자안에는 문자열이 담긴 책이 있을 수도 있고 없을 수도 있다.
(한마디로 책을 담아두는 상자가 있는데 닫혀있다.)
그리고 우리는 이 책을 어떤 공간에 가져가서 꼭 읽어야만 하는 상황이다.
강제 추출 방법은 상자안에 책이 있던지 말던지 신경도 안쓰고 상자를 가져가 책을 읽으려는 것이다.
책이 있으면 다행이지만 없다면 책을 읽을 수 없다.
안전하게 추출하는 방법은 상자를 미리 열어보고 책이 있으면 그 책을 나의 책가방에 담아 가져가서 읽는 것이다.
상자를 미리 열어보고 책이 있는지 확인하면 없었을 때 대처할 수 있다.
그리고 책가방에 담아가면 더 안전하게 담아갈 수 있다!
여기서 강제 추출 방법이 느낌표(!)를 사용하는 것이고 안전한 추출 방법이 옵셔널 바인딩이라는 것이다.
위 예를 들었던 것처럼 느낌표로 강제추출을 했는데 옵셔널 값이 nil이면 오류가 생겨 프로그램이 종료될 것이다.
옵셔널 바인딩을 사용하면 옵셔널 값이 nil인지 체크하고 nil이 아니라면 새로운 변수나 상수에 담아 안전하게 사용도 할 수 있다!
물론 nil이라면 그에 맞는 예외처리도 당연히 가능하다.
여기까지 개념을 좀 익힌거 같으니 간단한 실습을 통해 연습해보겠다.
먼저 강제로 추출하는 방법이다.
// 강제 추출 방법 var optionalName:String? = "eunduk" var name:String name = optionalName // 일반 변수에 옵셔널 변수를 저장하면 에러 발생. 옵셔널 추출 필요 name = optionalName! // 강제 추출. optionalName이 nil이라면 런타임 오류 발생 print(name) // eunduk출력
옵셔널 값이 nil이건 말건 신경안쓰고 일반 변수에 저장해버린다.
nil이 아니라면 상관 없지만 nil이라면 런타임 오류로 인해 프로그램이 종료된다.
다음은 옵셔널 바인딩 방법이다.
// 옵셔널 바인딩 방법 var optionalName:String? = "eunduk" var name:String // optionalName변수가 nil인지 체크하고 아니라면 bindingName변수에 할당하여 사용 (일반 변수 처럼 사용 가능) if var bindingName = optionalName { name = bindingName print(name) // eunduk출력 } else { // optionalName변수가 nil일때 예외처리 print("optionalName변수가 nil입니다.") }
옵셔널 변수의 nil여부를 체크하고 nil이 아니라면 새로운 변수에 할당하여 자유롭게 사용할 수 있다.
여기까지 옵셔널 추출방법 2가지를 살펴보았는데 다음 글에서는 또 유용하게 쓰이는 옵셔널 추출 방법인 옵셔널 체이닝이라는 것을 공부해 보겠다!
'Study > ios' 카테고리의 다른 글
[Swift/Study] Realm 속성으로 객체/인스턴스 리스트 (0) 2023.06.30 [Swift/Study] 옵셔널 체이닝 (0) 2023.06.28 [Swift/Study] 옵셔널이란? (0) 2023.06.28 [ios/Swift] TableView 에서 delegate pattern 사용하기 (0) 2023.03.26 [ios/Swift] TableView 응용하기 (0) 2023.03.19