• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    해결됨

Optionals - Unwrapping 질문 있어요

21.12.24 22:29 작성 조회수 108

0

지금 Optionals 3 하고 있는데, 왜 Optionals 들을 Unwrapping 해야 되나요? 그리고 Guard 부분이 잘 이해가 안되요. 

답변 2

·

답변을 작성해보세요.

1

안녕하세요

 

개발자가 값을 다루다 보면 값이 없을수도 있는 상태도 있어서 옵셔널을 쓰게 될텐데

swift언어 또는 애플이 만든 프레임웍이 제공하는 수 많은 기능(api)들은 값이 반드시 있다는 가정하에 동작되도록 설계된 것들이 많습니다.

그런데 그렇게 만든 기능들인데 값이 없는 nil을 만나면 크래쉬가 나거나 의도한 동작이 나올 수 없게 될겁니다.

그러니 반드시 값이 존재하는 상태로 만들라는 에러를 표시해서 개발에 혼란이 없도록 언래핑을 유도하도록 애플이 만든거라고 보시면 됩니다.

 

반대로 값이 없어도 정상 동작 되는 기능들은 옵셔널 상태로 그냥 사용해도 정상적으로 동작 되니 언래핑을 안해도 잘 작동합니다.

 

물론 개발자가 결과가 언래핑 상태로 하는게 필요하다고 판단해서 만드는 경우도 많이 있습니다.

 

 

그리고 guard의 어떤 부분이 이해가 안가는지 좀 더 자세히 적어주시면 답변 드리겠습니다.

 

 

0

제가 guard 부분 애서 이해가 안되는 파트 는 return 이거든요. 뭐가 밖에 있다 안에 있다 입니다!

guard문은 계속 진행할지 멈출지 결정하는 문법으로

일반적으로 아래처럼 구현하여 사용하게 됩니다.

 

func someFunction() {

        guard let someValue = someOptionalValue else {
       return
   }

   // some logic...
}

guard는 unwrapping이 성공하면 someValue에 값을 가져와서 아래쪽으로 로직이 계속 진행됩니다.

반대로 

unwrapping이 실패했을 경우 return이 있는 로직으로 실행되고

return으로 인해 someFunction을 나가게 됩니다.

그러면 guard문 아래쪽에 있는 로직은 실행되지 않는거죠.

 

이렇게 이해하시면 될 것 같습니다.