struct Book {
let title: String
let genre: Genre?
let bookCode: Int
var inventory: Int?
}
struct Genre {
let novel: String
let selfDeveloping: String
let economy: String
let finance: Finance?
}
struct Finance {
let A: String? = "안녕클래오 파트라"
let B: String? = "세상에서 제일가는"
let C: String? = "포테이토 칩"
let vestStockAndVestTiming: String? = "최고의 주식 최적의 타이밍"
}
let book: Book? = Book(title: "최고의 주식 최적의 타이밍", genre: bookGenre, bookCode: 1234, inventory: 1)
let bookGenre: Genre? = Genre(novel: "소설", selfDeveloping: "자기계발", economy: "경제", finance: financeBook)
let financeBook: Finance? = Finance()
if let unwrappedBook = book {
if let unwrappedGenre = unwrappedBook.genre {
if let financeBook = unwrappedGenre.finance?.vestStockAndVestTiming {
print("Optional Binding : \(financeBook)")
}
}
}
// 만일 옵셔널타입에 값이 포함되 있으면 프로퍼티나 메서드 혹은 서브스크립트를 호출하고 만약 값이 nil이거나 없을 경우 nil을 반환한다.
if let bookTitme = book?.genre?.finance?.vestStockAndVestTiming {
print("Optional Chaining : \(bookTitme)")
}
옵셔널 체이닝을 학습해보는 예제를 만들어보았다. 간단하게 좋아하는 책을 찾으러 접근하는데 이상하게 값이 확인이 되질 않는다..?
?????
왓 헤픈,,,?
lldb를 켜서 확인해보자
현재 lldb는 34번줄에 위치해 있다. 그런데 financeBook은 인스턴스화가 되었는데 왜 po bookGenre?.finnance?.vestStockAndVestTiming으로 입력했을때 nil이나올까 ????