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 |