선택 사항은 무엇입니까?
이것은 Swift에서 신뢰할 수 있는 코드를 작성하는 데 필요한 매우 중요한 방법 중 하나입니다.
선택사항은 값을 가질 수도 있고 갖지 않을 수도 있는 변수의 데이터 유형입니다.
표현을 살펴보자.
var myNumber: Int? = nil
이와 같이 변수를 선언할 때는 Optional에 “?”를 사용합니다.
이 경우 변수에 값을 할당하지 않으면 nil이 기본값으로 반환됩니다.
그러나 앱이 정상적으로 실행될 때 nil 값이 표시되면 오류가 보고됩니다.
따라서 해당 값에 접근하기 위해서는 선택적 Unwrapping 과정을 거쳐야 합니다.
옵셔널 언래핑은 옵셔널이 nil인지 확인하고 해당 값이 있으면 사용하는 과정입니다.
이것 때문에 null 방지하다 안정적으로 코딩로 사용할 수 있습니다
옵션 이해
// Int? 라고 생각하면
(..., -3, -2, -1, 0, 1, 2, 3, ...) + nil
// 즉, 정수 값들 + nil (범위가 그냥 Int값 보다 크다.
)
// 여기서 nil값을 벗기는 과정이 Optional Unwrapping
선택적 확장 방법
일반적으로 네 가지 방법이 있습니다.
1. 강제 확장
2. 논리적(조건문) 확인 및 추출
3. 선택적 바인딩
4. 제로 병합
강제 확장
가치가 있다고 확신하는 경우에만 사용해야 합니다.
(0이 아닌 경우에만 사용)
확장을 강제하려면 끝에 “!
”를 사용하십시오.
var optionalInt: Int? = 10
optionalInt!
// 10
var optionalInt: Int?
optionalInt!
// error
논리적(조건문) 검증 및 추출
조건식이 nil이 아닌지 확인 후 강제 언래핑을 사용합니다.
var myOptional: Int? = 10 // Optional(10)
if myOptional !
= nil {
print(myOptional!
) // 출력 결과: 10
}
또는 다음과 같이 삼항 연산자로 표현할 수 있습니다.
myOptional !
= nil ? print(myOptional!
) : print("nil")
선택적 바인딩
선택적 바인딩은 보안 코딩에 대한 가장 중요한 접근 방식 중 하나입니다.
주로 if let / guard let을 사용하여 구현됩니다.
상수가 0이 아닌 경우 상수는 하나의 값만 보유할 수 있습니다.
상수에 선택적 값이 포함되어 있으면 안전한 값을 사용한다는 의미입니다.
이해가 안 되시면 예제를 보세요!
var myOptional: Int? = 10
if let unwrapped = myOptional {
print(unwrapped) // 출력 결과: 10
} else {
print("myOptional is nil")
}
var myOptional: Int? = 10
guard let unwrapped = myOptional else {
print("myOptional is nil")
return
}
print(unwrapped) // 출력 결과: 10
제로 병합
선택적 값이 nil인 경우 대체 값을 반환하는 연산자입니다.
(선택값 + 두 개의 물음표(??) + 기본값)
값이 0이 아닌 경우 이전 옵션 값자동 해제 및 사용
값이 0이면 기본 설정사용하게 될 것이다.
let optionalLastName: String?
let optionalFisrtName: String? = "Daniel"
let name = optionalFisrtName ?? "이름이 없습니다"
// Daniel
// 또는 이와같이 여러개도 사용가능하다.
let fullName = optionalLastName ?? optionalFisrtName ?? "성 또는 이름이 없습니다"
// Daniel
설명이 틀렸는데 조금 이해가 되시나요?
틀린 부분이 있으면 지적 부탁드립니다.
읽어주셔서 감사합니다