티스토리 뷰

iOS/Swift-Memo

Optional(옵셔널) 과 Nil(닐)

malrang-malrang 2022. 2. 11. 17:20

옵셔널 이란

값이 있을수도있고 없을수도 있다 를 나타낸다.

값이 없을수도 있는 경우에 옵셔널 (optionals) 을 사용합니다.

옵셔널은 2가지 가능성이 있습니다:

  • 값이 있을경우 옵셔널을 풀어서 값에 접근하거나
  • 값이 없을 수도 있습니다.

타입변환을 시도할때 실패할수도 있으므로 값이 없음을 반환하도록 옵셔널을 사용 해줄수있다.
예시

let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
// convertedNumber is inferred to be of type "Int?", or "optional Int"

convertedNumber는 타입변환이 실패할수 있으므로 값이 없음을 나타내는 Int? 타입이 됩니다.

nil 이란

옵셔널 타입의 변수에 nil을 지정하여 값이 없음을 나타낼수 있습니다.

var serverResponseCode: Int? = 404
// serverResponseCode contains an actual Int value of 404
serverResponseCode = nil
// serverResponseCode now contains no value

첫번째 예시 var serverResponseCode: Int? = 404
serverResponseCode 에 현재 404,nil 두개중 하나의 값을 가지고있음을 나타냅니다.
옵셔널 타입이기 때문에 어떤 값을 할당하더라도 값이 없을수도 있다고 표현 할수있습니다.
두번째 예시 serverResponseCode = nil
serverResponseCode 에 현재 값이없음을 나타냅니다.

NOTE
옵셔널이 아닌 상수와 변수에는 nil 을 사용할 수 없습니다. 
코드에서 상수 또는 변수가 값이 없는 상태에서 동작이 필요하다면 항상 해당 타입의 옵셔널 값으로 선언해야 합니다.

기본값이 없이 옵셔널변수를 정의하면 변수는 자동적으로 nil 로 설정됩니다.

var surveyAnswer: String?
// surveyAnswer is automatically set to nil

surveyAnswer얘는 지금 nil 입니다.
기본값을 넣어주지 않았기 때문에 값이 없습니다!

if 구문과 강제로 풀기 (If Statements and Forced Unwrapping)

조건문을 사용하여
변수의 값이 nil 일경우와 nil이 아닐경우를 나누어 분기를 만들어 줄수 있습니다.
예시

if convertedNumber != nil {
print("convertedNumber contains some integer value.")
}
// Prints "convertedNumber contains some integer value."

이거 뜻은 convertedNumber 요놈이 nil 이 아니라면 if의 실행구문을 실행하라 라는 뜻이다.
이때 convertedNumber은 옵셔널 타입이어야 한다.

'iOS > Swift-Memo' 카테고리의 다른 글

MetaType, self 와 Self  (0) 2022.04.29
JSON, Encoding, Decoding, Codable  (0) 2022.04.29
Assets 에서 Json 파일 읽기(NSDataAsset)  (0) 2022.04.29
CaseIterable  (0) 2022.02.19
Optional(옵셔널) 언래핑 방법들  (0) 2022.02.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함