옵셔널 체인
- 옵셔널 체인으로 클래스나 구조체의 속성을 참조할 경우 클래스의 값이 nil이어도 오류가 발생하지 않는다
- 옵셔널 체인으로 읽어낸 마지막 값이 일반 타입이라도 모두 옵셔널 타입으로 리턴된다
- 옵셔널 타입으로 정의된 값이 자식 프로퍼티나 메서드를 가지고 있을 때, 다중 if를 쓰지 않고 간결하게 코드를 작성하기 위해 쓰인다
- 옵셔널 타입의 데이터는 연산이 불가능하다. 하지만 연산을 해야한다면 옵셔널 타입의 데이터를 다시 한번 옵셔널 타입으로 변경하면서 해제를 시킬 수 있다.
class Person {
var name : String?
var age : Int?
var sns : SNS? = SNS()
}
class SNS {
var fb : FaceBook? = FaceBook()
var tt : Twitter?
}
class FaceBook {
var account : String = "aaa@naver.com"
}
class Twitter {
var account : String = ""
}
let p = Person()
if let s = p.sns {
if let f = s.fb {
print("1: \(f.account)")
}
}
if let account = p.sns?.fb?.account {
print("2: \(account)")
}
print("3: \((p.sns?.fb?.account)!)")
print("4: \(p.sns!.fb!.account)")
print("5: \(p.sns?.tt?.account)")
// print("6: \(p.sns!.tt!.account)") //오류
'iOS 프로그래밍 > 문법' 카테고리의 다른 글
[swift] 문법정리5 (배열, 딕셔너리,클래스와 구조체 열거형 비교) (0) | 2020.07.31 |
---|---|
[swift] 문법정리4 (클래스, 상속, 익스텐션) (0) | 2020.07.31 |
[swift] 문법정리3 ( 함수와 메서드, 클로저) (0) | 2020.07.30 |
[swift] 문법 정리2 (0) | 2020.07.30 |
[swift] 문법 정리1 (0) | 2020.07.30 |