본문 바로가기

프로그래밍 [KOR]/Swift

Swift의 옵셔널 추출

1. 옵셔널 추출


  •옵셔널에 들어있는 값을 사용하기 위해 꺼내오는 것



2. 옵셔널 방식


  •옵셔널 바인딩


1. nil 체크 + 안전한 추출

2. 옵셔널 안에 값이 들어있는지 확인하고 값이 있으면 값을 꺼내옵니다

3. if-let 방식 사용


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
func printName(_ name: String) {
    print(name)
}
 
var myName: String= nil
 
// printName(myName)
// 전달되는 값의 타입이 다르기 때문에 컴파일 오류발생
 
if let name: String = myName {
    printName(name)
else {
    print("myName == nil")
}
 
 
var yourName = String! = nil
 
if let name: String = yourName {
    printName(name)
else {
    print("yourName == nil")
}
 
// name 상수는 if-let 구문 내에서만 가능
// 상수 사용범위를 벗어났기 때문에 컴파일 오류 발생
// printName(name)
 
 
// ,를 사용해 한번에 여러 옵셔널을 바인딩 할 수 있음
// 모든 옵셔널에 값이 있을 때만 동작
myName = "Jinun"
yourName = nil
 
if let name = myName, let friend = yourName {
    print("\(name) and \(friend)")
}
// yourName 이 nil 이기 때문에 실행되지 않음
yourName = "Jennie"
 
if let name = myName, let friend = yourName {
    print("\(name) and \(friend)")
}
 
// Jinun and Jennie
cs


  •강제추출 : 옵셔널에 값이 들어있는지 아닌지 확인하지 않고 강제로 값을 꺼내는 방식, 만약 값이 없을 경우(nil)

런타임 오류가 발생하기 때문에 추천 X


1
2
3
4
5
6
7
8
9
10
11
12
var myName: String= Jinun
var youName: String! = Jennie
 
printName(myName!// Jinun
myName = nil
 
// print(myName!)
// 강제추출시 값이 없으므로 런타임 오류 발생
yourName = nil
 
// printName(yourName)
// nil 값이 전달되기 때문에 런타임 오류 발생
cs




❖출처: http://blog.yagom.net/


제 나름대로 생각을 정리하며 포스팅합니다.

정보전달에 있어 차질이 생기는 것을 우려해 나름대로 확실하게 검증을 하고 포스팅하려고 노력합니다.

본 포스팅에 잘못된 정보가 있거나 수정해야할 내용이 있다면 댓글 또는 아래의 이메일로 알려주시면 감사하겠습니다.

E-mail : silent_lhr@naver.com



공감은 로그인이 필요없습니다.

공감은 저에게 포스팅을 이어나갈 수 있는 힘이 됩니다.


'프로그래밍 [KOR] > Swift' 카테고리의 다른 글

Swift의 클래스  (0) 2018.10.08
Swift의 구조체  (0) 2018.10.08
Swift의 옵셔널  (1) 2018.10.04
Swift의 반복문  (0) 2018.10.04
Swift의 조건문  (0) 2018.10.04