실패 가능한 이니셜라이저
이니셜라이저를 정의할 때
전달인자가 잘못된 값이거나
적절하지 못한 값인거나 등의 이유로
인스턴스 초기화에 실패할 수 있음
이에 대응하고자 실패 가능성을 내포한 이니셜라이저 (= 실패 가능한 이니셜라이저)
실패 가능한 이니셜라이저는 클래스, 구조체, 열거형 등에 모두 정의 가능
실패했을 경우에는 "nil"을 반환해주므로
반환 타입이 옵셔널로 지정 (= "init?" 키워드 사용)
실패 가능한 이니셜라이저
class Contact {
var name: String
init?(name: String) {
if name.isEmpty {
return nil
}
self.name = name
}
}
let jerry: Contact? = Contact(name: "")
if let jerry: Contact = jerry {
print(jerry.name)
} else {
print("no initialized")
}
// no initialized
Contact 클래스는 name 이라는 저장 프로퍼티에 값을 잘못 입력하면
실패 가능한 이니셜라이저를 통해 초기화하지 않도록 함
실패 가능한 이니셜라이저는 열거형에서 유용함
특정 case에 맞지 않는 값이 입력될 경우
생성에 실패하도록 함
enum Season: String{
case spring = "Spring"
case summer = "Summer"
case fall = "Fall"
case winter = "Winter"
init? (month: Int) {
switch month {
case 3,4,5:
self = .spring
case 6,7,8:
self = .summer
case 9,10,11:
self = .fall
case 12,1,2:
self = .winter
default:
return nil
}
}
}
var jerry: Season? = Season(month: 10)
print(jerry) // fall
var mike: Season? = Season(month: 13)
print(mike) // nil
jerry = Season(rawValue: "Spring")
print(jerry) // spring
mike = Season(rawValue: "spring")
print(mike) // nil
'iOS > Swift' 카테고리의 다른 글
인스턴스 생성 및 소멸 6편 (인스턴스 소멸) (0) | 2024.02.02 |
---|---|
인스턴스 생성 및 소멸 5편 (함수를 사용한 프로퍼티 기본값 설정) (0) | 2024.02.01 |
인스턴스 생성 및 소멸 3편 (초기화 위임) (0) | 2024.01.31 |
인스턴스 생성 및 소멸 2편 (0) | 2024.01.30 |
인스턴스 생성 및 소멸 1편 (0) | 2024.01.29 |