inflearn logo
강의

Course

Instructor

UIKit - iOS14 Practical Guide <Becoming a Real iOS App Developer>

Optionals - Unwrapping 질문 있어요

Resolved

200

Apple Ollie

1 asked

0

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

question ios swift

Answer 2

1

enilv0529

안녕하세요

 

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

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

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

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

 

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

 

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

 

 

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

 

 

0

Apple Ollie

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

0

enilv0529

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

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

 

func someFunction() {

        guard let someValue = someOptionalValue else {
       return
   }

   // some logic...
}

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

반대로 

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

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

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

 

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

 

 

클로저내의 return 질문

0

52

1

movieapp 3 46분 실행이 안돼요ㅜㅜ

0

184

2

missing constraints 에러

0

219

1

콘솔창 print 내용 안 뜸

0

217

1

키보드 떠 있는 상태 만들기

0

309

1

pageViewController 호출시점

0

372

2

20:01 쯤에서

0

288

1

WebView와 이니시스 결제

0

606

1

movie App 영상이 안나오고 소리만 나옵니다.

0

574

2

to do app 강의중에

0

255

1

UIKit 요소에 대하여...

0

314

1

기업 내부용 앱을 만들어 설치하고 싶다면?

0

597

1

Break Point 사용법

0

403

2

클론 프로젝트 코드 요청드립니다.

0

318

1

extension UIColor

0

247

1

TintColor란 정확히 무엇인가요?

0

640

1

computedProperty 와 func 는 각각 언제 사용하면 좋나요?

0

256

2

force cast 질문입니다.

0

212

1

Optional 관련 질문드립니다.

0

252

1

ToDoApp에서 셀간의 간격 설정에 관한 질문

0

323

1

45도 회전의 경우

0

713

2

파일 여는 방법에 대해서 질문 드립니다

0

231

1

navigation backgrouncolor가 파스텔톤으로 적용되지 않는 건에 대하여

0

316

2

To do App 질문있습니다.

0

213

1