ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift/Study] 옵셔널이란?
    Study/ios 2023. 6. 28. 00:07

     

    스위프트에서 가장 중요한 문법 중 하나는 옵셔널이다.

    옵셔널은 단어 뜻대로 값이 있을 수도 있고 없을 수도 있다는 의미이다.

     

    간단한 예를 들자면

    일반 정수 변수 number1는 가질 수 있는 값이 ... , 0, 1, 2, 3 ... 이고

    옵셔널 정수 변수 number2가 가질 수 있는 값은 ... , 0, 1, 2, 3 ..., nil 이다.

    단순히 nil (null) 값을 가질 수 있냐 없냐 차이이다.

     

    옵셔널을 처음 접하면 생각보다 생소할 수 있다.

    그래서 이 친구가 도대체 어떤 상황에 쓰이는지 알면 이해를 돕기 쉽다.

     

    1. 값이 없을 수 있는 경우

    예를 들면 사용자가 어떤 사이트에 회원가입을 한다고 해보자.

    이름, 아이디, 비밀번호는 필수 입력이여서 입력했고 이메일은 선택 입력이길래 입력하지 않고 회원가입을 하였다.

    이때 개발자 입장에서 이메일은 옵셔널로 값을 받아야 한다.

    사용자가 이메일을 입력할 수 도있고 안 할 수도 있기 때문!!

     

    2. 값을 나중에 저장해야 하는 경우

    회원가입한 사용자가 로그인을 하고 게임을 한다고 해보자.

    게임을 한판하고 점수가 나왔는데 기록 저장을 위해 이 점수를 저장하여야 한다.

    이때 점수를 저장할 변수를 옵셔널로 선언해야 한다.

    왜냐?! 회원가입을 할 때 점수를 저장할 수 없기 때문에!

     

    3. 예외 상황 처리

    어떤 함수를 가정해보겠다.

    입력된 값이 0~10이면 1을 반환하고 11~20이면 2를 반환, 21~30이면 3을 반환하는 함수가 있다.

    내 알고리즘에 필요한 반환 값은 1, 2, 3인 것이다.

    하지만 입력값으로 -2나 42가 들어온다면 어떡할 것인가??

    예외를 처리해줘야 한다.

    때문에 옵셔널을 사용하면 내가 원하는 범위가 아닌 입력값이 들어왔을 때 nil값을 반환하여 처리할 수 있다.

     

    그 외에도 안정성을 확보하기 위해, 값의 존재 여부를 확실히 하기 위해 다양한 상황에서 옵셔널이 쓰일 수 있다.

     

     

    옵셔널이 무엇인지 알았으니 어떻게 사용하는지 실습해보겠다.

    // 일반 문자열 변수
    var name:String
    print(name) // 오류
    name = "eunduk" // 값을 줘야 사용할 수 있다.
    print(name) // eunduk 출력
    
    // 옵셔널 문자열 변수
    var optionalName:String?
    print(optionalName) // nil 출력
    optionalName = "eunduk"
    print(optionalName) // Optional("eunduk") 출력

    사실 선언하는 것은 너무나 쉽다. 데이터 타입 뒤에 "?"만 붙이면 된다.

    이렇게 옵셔널을 선언하는 것은 매우 쉽지만 사용하려고 하면 여러가지 제약이 생긴다.

    이때 옵셔널을 추출하여 사용한다고 하는데 옵셔널 변수나 상수는 옵셔널 추출을 통해 일반 변수에 저장하거나 레이블에 출력하는 등

    사용하기 위해 적절한 방법을 적용시켜야 한다.

     

    일단 이번 글은 여기까지 작성하고 다음 글에서 몇개의 옵셔널 추출 방법을 공부해보도록 하겠다!

Designed by Tistory.