일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UIAlertAction
- Xcode
- AnyObject
- xcode로 날씨앱 만들기
- 영문 개인정보처리방침
- font book
- UICollectionViewFlowLayout
- MKMapViewDelegate
- addannotation
- CoreLocation
- 단일 책임원칙
- 한국어 개인정보처리방침
- MKMapItem
- 러닝기록앱
- weak var
- 서체관리자
- dispatchsource
- Required Reason API
- CLLocationManagerDelegate
- swift
- Protocol
- Timer
- App Store Connect
- weatherKit
- 클로저의 캡슐화
- WeatherManager
- SwiftUI Boolean 값
- 러닝타이머
- Startign Assignments
- RunningTimer
- Today
- Total
VesselWheel
Optional Chainnig () 본문
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 |