공부한 것
부스트코스 - iOS 프로그래밍을 위한 스위프트 기초
알게된 것
1. 옵셔널
// someOptionalParm에 nil이 할당될 수 있음
func someFunction(someOptionalParam: Int?) {
// ....
}
/// someOptionalParm에 nil이 할당될 수 없음
func someFunction(someOptionalParam: Int) {
// ....
}
- nil이 할당될 수 있는지 없는지를 표현
- nil의 가능성을 명시적(코드)으로 표현 가능
- 옵셔널이 아닌 경우 nil 체크 없이 바로 사용 가능
- nil로 인한 예외 상황을 최소화
2. 옵셔널 표현 방법
// 암시적 추출 옵셔널
var optionalValue: Int! = 10
switch optionValue {
case .none:
print("This is none!")
case .some(let value)
print("This is \(value)")
}
// 기존 변수처럼 사용 가능
optionValue = optionValue + 1
print(optionalValue) // Optional(11)
// nil 할당 가능
optionValue = nil
// 잘못된 접근으로 인한 런타임 에러
optionalValue = optionalValue + 1
// #####################################
var optionalValue: Int? = 10
// nil 할당 가능
optionalValue = nil
// 기존 변수처럼 사용 불가
// 옵셔널은 기존 변수와 다른 타입
optionalValue = optionalValue + 1
3. 옵셔널 추출
- 옵셔널 바인딩 방식
var myName: String? = nil
// name 변수는 if-else 구문 내부에서만 사용 가능
if let name:String = myName {
print(name)
} else {
print("myName is nil")
}
var myName = "kodo"
var yourName: String? = nil
// ,를 사용해서 여러 개의 옵셔널을 한 번에 바인딩 할 수 있음
// 현재 yourName이 nil이므로 출력문이 실행되지 않음
if let name = myName, let friend = yourName {
print("\(name), \(friend)")
}
- 강제 추출 방식
var myName: String! = nil
// 런타임 에러
print(myName)
'💻 개발 > iOS' 카테고리의 다른 글
[iOS / Swift] 클로저와 프로퍼티, 가볍게 알아보기 (0) | 2022.10.02 |
---|---|
[iOS / Swift] 상속 VS 익스텐션 (0) | 2022.09.27 |
[TIL] 22.08.24 (0) | 2022.08.24 |
[TIL] 22.06.03 (0) | 2022.06.03 |
[TIL] 22.05.27 (0) | 2022.05.27 |