VesselWheel

Optional Chainnig () 본문

Xcode Study

Optional Chainnig ()

JasonYang 2023. 10. 19. 13:15

ex07.playground.zip
0.02MB

 

import UIKit

 

/*

 Optional Chainnig ()

 

 Nil 체크를 보다 편리하게 함

 

 Optional Binding : if let

 

 강제 unwrapping : ! 연산자 사용

 

 이른 탈출(복귀) : guard let, guard else

 

 Optional  형변환 : as? - Nil 이 아닌 경우에만 형변환함

 

 Optinonal 기본값 : ?? "기본값"

 */

class Person{

    var objContact: Contact?

    // 생성자 함수에서 초기화하기

    init(){

        self.objContact = Contact()

    }

}

class Contact{ // 연락처

    var name: String?

    var phone: String?

    var email: String = "010-1234-5678"

}

let p1 = Person()

dump(p1)

// p1.objContact 와 Contact 객체의 연결을 끊음

p1.objContact = nil

/*

 Value of optional type 'Contact?' must be unwrapped to refer to member 'name' of wrapped base type 'Contact'

 */

// p1.objContact.name = "홍길동"

// Optinal Chain: ?

//   ㄴ objContact 가 nil 이 아닐 때만 홍길동이 할당됨

p1.objContact?.name = "홍길동"

dump(p1)

 

// Optional Binding

// if let newObj = : nil 이 아닐 때 동작하고 nil이면 else로 넘어감

if let newObj = p1.objContact{

    newObj.name = "류성룡"

}else{

    print("newObj는 nil임")

}

dump(p1)

 

'Xcode Study' 카테고리의 다른 글

형변환 : (data) type casting  (1) 2023.10.19
protocol  (0) 2023.10.19
구조체, 열거형, 클래스의 차이  (0) 2023.10.19
열거형 : Enum(Enumeration)  (0) 2023.10.19
Tuple  (0) 2023.10.19