IOS [ 개념정리 ]
23.11.1 옵셔널(Optional)의 개념과 확장(Extension)의 개념
oong2
2023. 11. 1. 15:15
옵셔널(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 에 대한 추가정보를 아예 괄호밖에서 선언하여 추가로 작성해 줄 수 있는 코드인것이다.