23.11.1 옵셔널(Optional)의 개념과 확장(Extension)의 개념

2023. 11. 1. 15:15IOS [ 개념정리 ]

 

옵셔널(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 에 대한 추가정보를 아예 괄호밖에서 선언하여 추가로 작성해 줄 수 있는 코드인것이다.