728x90
반응형
Optional Int형
- Optional(10)
- Optional Int형을 만들기 위해서는 Int? 또는 Int!를 사용한다.
- -Int형 값을 저장하는 것은 물론이고 값을 저장 안 할 수도 있다.(값이 없음) (nil)
옵셔널 타입
- 값을 반환할 때 오류가 발생할 가능성이 있는 값은 옵셔널 타입이라는 객체로 감싸서 반환한다.
- Int("100")은 100이 아닌 Optional(100)을 리턴함, print(Int("100")), Int형 initializer
- Int("Hello")은 정수 값을 반환할 수 없다. 이때 아무런 값도 반환할 수 없다는 의미로 nil을 반환하게 된다.
- Swift에서 기본 자료형(Int, Double, Sting 등)은 nil값을 저장할 수 없다.
- nil도 저장하려면 옵셔널 타입으로 선언해야 한다.
- 옵셔널 타입은 변수 또는 상수에 아무런 값이 할당되지 않는 상황을 안전하게 처리하기 위한 방법을 제공하는 것이다.
- 옵셔널 타입 변수를 선언하기 위해서는 타입 선언부 뒤에 "?" 문자를 사용한다.
- ex) index라는 이름의 옵셔널 Int변수를 선언: var index: Int?
옵셔널 타입 강제 언래핑(forced unwrapping)
- 옵셔널 변수에 값이 있으면 옵셔널로 "래핑되었다(wrapped)"고 한다.
- 옵셔널에 래핑된 값은 강제 언래핑(forced unwrapping)으로 풀어준다.
옵셔널 타입 강제 언래핑 : optional binding
- 강제 언래핑하는 또 다른 방법으로, 옵셔널 바인딩(optional binding)을 이용하여 옵셔널에 할당된 값을 임시 변수 또는 상수에 할당한다.
if let constantname = optionalName{
//옵셔널 변수가 값이 있다면 언래핑해서 일반 상수 constantname에 대입하고 if문 실행
//값이 없다면 if문의 조건이 거짓이 되어 if문을 실행하지 않음
}
if var variablename = optionalName {
//옵셔널 변수가 값이 있다면 언래핑해서 일반 변수 variblename에 대입하고 if문 실행
//값이 없다면 if문의 조건이 거짓이 되어 if문을 실행하지 않음
}
여러 옵셔널을 언래핑
- 여러 옵셔널 변수를 한 번에 언래핑을 할 수 있다.
- 한 번에 언래핑을 하려면 콤마를 사용한다.
두 가지 옵셔널 타입
- 옵셔널이 항상 유효한 값을 가질 경우 옵셔널이 암묵적인 언래핑(implicitly unwrapped)이 되도록 선언할 수도 있다.
- 클래스의 아웃렛 변수 초기화에서 많이 사용한다.(자동 생성되는 코드)
- 이러한 방법으로 옵셔널이 선언 된다면 강제 언래핑이나 옵셔널 바인딩을 하지 않아도 값에 접근할 수 있다.
- 암묵적인 언래핑으로 옵셔널을 선언하기 위해서는 선언부에 물음표(?) 대신에 느낌표(!)를 사용한다.
- var x : Int? //옵셔널 변수 선언 방법 1
- var y : Int! //옵셔널 변수 선언 방법 2
옵셔널을 사용하는 이유
- 옵셔널 타입만이 값을 갖지 않는다는 의미의 nil 값을 가질 수 있다.
- 즉, 값이 없는 상황이 생각보다 많기 때문에 그러한 상황에서 사용한다.
- nil 값을 옵셔널이 아닌 변수나 상수에 할당할 수 없다.
감사합니다.
잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!
궁금하신 부분은 댓글로 질문 부탁드립니다!
728x90
반응형
'Apple > Swift' 카테고리의 다른 글
[Swift] computed property, stored property, self, overloading (0) | 2023.02.01 |
---|---|
[Swift] 클래스, 객체, 인스턴스 (0) | 2023.01.31 |
[Swift] 함수와 메서드 (0) | 2023.01.26 |
[Swift] 연산자와 제어문 (0) | 2023.01.25 |
[Swift] 데이터 타입, 자료형, print 함수, 변수, 상수, 튜플 (0) | 2022.07.08 |