인프런 커뮤니티 질문&답변

찌노님의 프로필 이미지

작성한 질문수

[Lv.2] 레벨업 - SwiftUI intermediate with Core Data

Optional - If Let Guard

if let else 질문있습니다.

해결된 질문

24.01.21 11:12 작성

·

131

0

1.

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


2.
if displayText != nil {

Text(displayText!)

} else{

ProgressView()

}

 


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

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

답변 1

0

Jacob(제이콥)님의 프로필 이미지
Jacob(제이콥)
지식공유자

2024. 01. 23. 05:45

안녕하세요 찌노 님.

먼저 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

찌노님의 프로필 이미지

작성한 질문수

질문하기