Jihyeonnn
송지현
Jihyeonnn
전체 방문자
오늘
어제
  • Jihyeon Song (29)
    • C++ (0)
    • C (0)
    • Linux (0)
    • iOS (23)
    • JAVA (0)
    • Python (1)
    • GitHub (0)
    • 개인 프로젝트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ios
  • Mac사용법
  • 프로그래밍
  • swift
  • 개발자
  • UI
  • 기초
  • array
  • 코딩
  • 파이썬 #python #개발 #기초
  • 스위프트
  • optionalchaining
  • iOS 개발
  • 개발
  • iOS개발
  • Mac
  • generic
  • IT

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Jihyeonnn

송지현

Swift - 3 Optional
iOS

Swift - 3 Optional

2024. 9. 25. 16:44
래핑과 언래핑

 

옵셔널을 위한 연산자로는 '?' 와 '!' 가 있다.

'?' 는 옵셔널로 래핑을 하고, '!' 는 강제로 언래핑을 하는 역할이다.

변수의 값을 사용하려면 언래핑을 해야 한다.

var x : Int = 10
print(x) //10
var y : Int? = 20
print(y) //Optional(20)
print(y!) //20
var y : Int? = 20
y = y! + 1
print(y) //optional(21)

 

위와 같은 경우, y! + 1 에서 잠깐 언래핑하여 쓰고 다시 래핑되어 optional(21)이 출력된다.

 

nil?

 

0이 아닌, 값이 없다는 것을 표현한다. (null과 다름)

var x : Int = 10
print(x) //10
var y : Int?
print(y) //nil
var x : Int = 10
print(x) //10
var y : Int?
print(y!) //error

 

if문을 이용하여 x에 값이 있을 때는 값을 출력하고, 없으면 nil을 출력하는 코드이다.

var x : Int?
x = 10
if x != nil{
    print(x!)
}
else {
    print("nil")
}

//결과값 10
var x : Int?
//x = 10
if x != nil{
    print(x!)
}
else {
    print("nil")
}

//결과값 nil

 

만약 위 코드에서 x!=nil 형식으로 입력하는 경우 x! = nil의 의미가 되어 버린다.

'!' 이 우선 순위가 가장 높기 때문이다.

 

옵셔널 바인딩의 예
var x : Int?
x = 10
if let xx = x {
    print(x,xx) //optional(10) 10
}
var x : Int?
x = 10
if let x {
    print(x) //10
}
var x : Int?
x = 10
if let xx = x {
    print(x, xx)
}
else{
    print("nil")
}
var x1 : Int?
if let xx = x1{
    print(xx)
}
else{
    print("nil")
}
//출력값
//optional(10) 10
//nil

 

Swift 5.7부터는 if let x라고 입력해도 정상적으로 실행된다.

 

var x : Int?
var y : Int?
x = 10
y = 20
if let xx = x, let yy = y {
  print(xx, yy)
} else {
  print("nil")
}
//10 20

이런 식으로 한 번에 옵셔널 바인딩이 가능하다.

 

var x : Int? = 10
var y : Int? = 20

if let x, let y {
  print(x, y)
}

조금 더 간략하게 만든 코드이다.

 

두 가지의 옵셔널 타입

 

앞서 말한 옵셔널 선언 방법 외에 하나의 방법이 또 있는데, 이에 대해서 설명해 보겠다.

var x : Int? = 10
var y : Int! = 20
print(x,y) // Optional(10) Optional(20)

 

위와 같이 '!' 를 이용하여 선언할 수 있다.

var x : Int? = 10
var y : Int! = 20
var z : Int = 1
z = x!
print(z) //10
z = y
print(z) //20

 

두 방법의 차이점을 알아 보자.

'?' 의 경우에는 꼭 언래핑을 해 주어야 한다.

반면, 옵셔널을 '!' 로 선언하는 경우엔 굳이 언래핑을 하지 않아도 결과값이 20으로 출력된다.

Optional로 사용할 수 없는 경우에는 자동으로 언래핑 해 주기 때문이다.(사용 가능하면 그냥 Optional로 인식)

 

nil 병합 연산자 - '??' 예제
var x : Int? = 10
var y : Int
y = x ?? 1 //x의 값이 nil일 경우 1을 대입한다.
print(x,y) //Optional(10) 10
var x : Int? = 10
var y : Int
y = x ?? 1 
print(x,y) //nil 1

 

모든 출처: Smile han의 iOS 프로그래밍

'iOS' 카테고리의 다른 글

Swift - 5 Method(함수) 2  (0) 2024.10.15
Swift - 4 Method(함수)  (1) 2024.10.08
Swift - 2 연산자, 제어문  (2) 2024.09.25
Swift - 1  (0) 2024.09.11
Mac 사용법(단축키)  (0) 2024.09.11
    'iOS' 카테고리의 다른 글
    • Swift - 5 Method(함수) 2
    • Swift - 4 Method(함수)
    • Swift - 2 연산자, 제어문
    • Swift - 1
    Jihyeonnn
    Jihyeonnn

    티스토리툴바