23.11.1 옵셔널(Optional)의 개념과 확장(Extension)의 개념
2023. 11. 1. 15:15ㆍIOS [ 개념정리 ]
옵셔널(Optional)
은 Swift 언어의 중요한 특징 중 하나로,
값이 존재할 수도 있고 존재하지 않을 수도 있는 값을 나타내는 데이터 타입이다.
var optionalValue: Int? // Int?은 Int 타입의 옵셔널 변수를 나타냅니다.
위의 코드에서 보면 , optionalValue 라는 Int 값이 존재하지않으면 오류가 발생할 수 있기때문에 ,
오류 방지를 위해 만약 optionalValue 에 값이 없으면 nil을 할당시켜주세요 라고 해주는 ? 를 뒤에다 붙여주는것이다.
그러나 옵셔널로 지정을해두었지만 , 이 값에는 확실히 값이 들어갈거야 ! 하는 변수가 있을 수 있는데
그럴땐
let unwrappedNumber = optionalNumber! // 옵셔널 해제
위 코드와 같이 ! 느낌표를 붙여주어 옵셔널을 해제시킨다.
그러나 이 방법자체는 굉장히 러프하므로 , 권장하지 않는방법이고 , 안전하게 옵셔널을 언래핑 ( 해제 ) 하거나, 바인딩 하는 방법들이
여럿 있으니 그것을 사용하는것이 좋다.
확장(Extension)
은 기존 타입(클래스[class], 구조체[struct], 열거형[enum])에
무언가 코드를 추가하고싶을때 , 코드의 정렬과 용도에 따른 분리를 할 수 있게끔
사용할 수 있다.
class Date {
var date = Date()
}
extension Date {
// 날짜와 시간을 문자열로 변환하는 메서드
func toString(format: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
return dateFormatter.string(from: self)
}
}
위 코드처럼 애초에 클래스인 Date 에 대한 추가정보를 아예 괄호밖에서 선언하여 추가로 작성해 줄 수 있는 코드인것이다.
'IOS [ 개념정리 ]' 카테고리의 다른 글
23.11.09 ARC 개념정리 / TableVie 개념정리 (1) | 2023.11.09 |
---|---|
23.11.08 앱의 상태 / 스토리보드를 이용할때의 장단점 (0) | 2023.11.08 |
23.10.31 Grand Central Dispatch (GCD)와 Operation Queue의 차이점 / Delegate pattern 에 대한 설명 (1) | 2023.11.01 |
23.10.30 Codable을 이용한 JSON 디코딩법 / Auto Layout 에서 스택뷰와 같은 컨테이너 뷰의 역할과 사용법 (1) | 2023.10.30 |
23.10.27 프로퍼티 옵저버(Property Observer)didSet, willSet 의 개념 / bound&frame 의 차이점 (1) | 2023.10.27 |