새소식

iOS/Swift

[기본문법]옵셔널

  • -

옵셔널

옵셔널:  값이 있을 수도 있고 없을 수도 있게 만드는것

nil : 값이 없음을 나타내는 키워드

 

옵셔널 맛보기

아래의 예시에서 name1과  name2 변수생성은 값이 있거나 오류가 난다.

옵셔널을 이용한 name3와  name4 변수생성이 값이 없는 변수를 만들 수 있다.

var name0: String = ""  //값이 없는게 아니라 빈문자열 이라는 값을 가지고 있다.
var name1: String = nil  //Error(문자열에 nil을 저장할 수 없다)

//문자열에 nil을 적용하려면 옵셔널을 사용해야 한다.

var name2: String? = nil   // nil
//또는  
var name3: String?      //nil

 

옵셔널 선언과 출력값 확인

var lable1: String?    // nil

var lable2: String? = "swift"   //"swift"

//var lable3: String = lable2   //Error (둘 다 옵셔널 선언이 없거나 선언 되어있어야 한다.)

print(lable2)

____________________출력
Optional("swift")

옵셔널바인딩

명시적 해제

  • 강제해제
    • 주의사항 : 값이 nil인 변수를 강제해제하면 에러가 발생해 프로그램이 강제 종료 될 수 있다.
//강제해제
var number: Int? = 3
print(number)
print(number!)

------------------------------
Optional(3)
3
  • 비강제해제
//if문을 이용한 비강제해제 
var number: Int? = 3

if let result = number{
    print(result)
} else {
}

------------------------------
3
//guard문을 이용한 비강제해제
var number: Int? = 3

func test(){
    let number: Int? = 5
    guard let result = number else { return }
    print(result)
}

test()

------------------------------
5

 

묵시적해제

  • 컴파일러에 의한 자동해제
    • 옵셔널값을 비교연산자를 이용해 비교하면 컴파일러가 자동적으로 옵셔널 해제 후 비교
//컴파일러에 의한 자동해제
let value: Int? = 6

if value == 6 {
    print("value가 6입니다.")
} else {
    print("value가 6이 아닙니다.")
}

------------------------------
value가 6입니다.
  • 묵시적 옵셔널 해제
//값 변환
let string = "12"  //"12"
var stringToInt: Int? = Int(string) //String을 Int로 변환한 값을 넘겨받는다. // 12
print(stringToInt)

------------------------------
Optional(12)
//묵시적 해제
//대신에 !를 사용하면 묵시적 해제를 사용하여 변수를 사용할 수 있다.
let string = "12"
var stringToInt: Int! = Int(string)
print(stringToInt + 1)

------------------------------
13

End

'iOS > Swift' 카테고리의 다른 글

[기본문법] 클래스  (0) 2022.10.28
[기본문법]구조체  (0) 2022.10.28
[기본 문법] 반복문  (0) 2022.10.26
[기본문법] 조건문  (0) 2022.10.26
[기본문법] 함수  (0) 2022.10.24
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.