inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기

Optional - If Let Guard

if let else 질문있습니다.

해결된 질문

242

찌노

작성한 질문수 1

0

1.

if let text = displayText {
Text(displayText!)
} else {
ProgressView()
}


2.
if displayText != nil {

Text(displayText!)

} else{

ProgressView()

}

 


1번과 2번 두 코드의 차이를 모르겠습니다.

if let else를 쓰게되면 장점이 무엇인가요?

ios swift swiftui iphone-app

답변 1

0

Jacob(제이콥)

안녕하세요 찌노 님.

먼저 1번 코드, 2번코드에서 Text(displayText!) 와 같이 !을 사용하게되면 현재 타입은 String? 으로 Optional 값인데 ! (느낌표)를 사용하면 강제 upwrapping 하게 됩니다. 그래서 Swift 에 강제로 String 이라고 타입을 지정하게 됩니다. (이 방법은 나중에 debugging 과정에서 error 발생되면 원인을 찾기 어렵기 때무에 ! 사용되신 lf let 또는 gurad 구문을 사용해서 안전하게 optional 값을 처리 하는게 좋습니다)

그리고 if let else 의 차이점 은 1번 코드에서는 if let text = displayText 를 하게 되면 displayText 가 nil 이 아닌 String 일경우에 text 라는 변수에 displayText 가 할당되어서 사용하기 때문에 Optional 처리를 하고 else 일때는 (값이 nil 일경우) 에 따로 처리 할 수 있다는것에 장점이 있습니다.

질문하신, 1번과 2번의 차이는 1번은 if let else 로 optional unwrapping 이 되었다는것이고 2번은 단순히 nil 이 아닐경우에 출력되도록 하는 점이 다르다고 할 수 있습니다.

 

질문주셔서 감사합니다

Jacob

진로에 대한 질문...!

0

41

1

Static 선언 시 에러 발생

0

46

1

클로저의 형태로 만들다

0

51

1

Function Types Error

0

43

1

안드로이드 기기 실행 오류

0

66

2

수강연장 가능할까요...

0

60

2

강의에서 사용된 안드로이드 스튜디오 버전을 알고싶어요.

0

63

2

SwiftData 미리보기 미적용

0

58

2

중괄호와 함수

0

60

2

기본 뷰 디자인이 강사님과 다릅니다.

0

57

2

Sorted, Filter, Map - UserViewModel 부분 오류 발생

0

144

1

ViewBuilder 강의 관련 질문입니다.

0

99

1

CoreData Array의 변화에 따른 SwiftUI View 변화 적용(with @Observable Macro)

0

242

2

init-deinit의 무한루핑을 벗어나는 방법이 궁금합니다.

1

210

2

Apple 공식 문서 보는법

0

360

2

5월 업데이트 예정이었던 , iOS17 컨텐츠 SwifData 업데이트 언제 되나요 ?

0

267

1

Spacer() 를 넣으니 예제처럼 SafeArea 확보가 안됩니다.

0

529

3

Local Notification 예제 문의

0

353

2

Local Notification 강의 편집오류 있어요

0

261

2

강의중 코드폴딩 단축키 (커맨트+옵션+왼쪽방향키)

0

227

2

코어데이터에 중복값 입력 방지

0

334

1

Combine 관련 질문드립니다.

0

263

1

강의 Weak Self 코드 실행시 오류에 대해

0

673

1

SwiftData가 Core Data를 대체하는지요?

0

2136

1