通過拆我有以下的執行中,我需要獲得訪問streetName如圖所示:強制斯威夫特
if let street = john.residence?.address?.streetName {
street // Darling Lane // This prints string correctly
}
let street = john.residence?.address?.streetName! // Some "Darling Lane" The bang sign // at the end does not forcefully unwraps the optional
有什麼理由?
更新:
好吧,我現在很困惑!這裏是完整的代碼:
class Person {
var residence :Residence? = Residence()
}
class Residence {
var address :Address? = Address()
}
class Address {
var streetName :String? = "Darling Lane"
var zipCode :String?
var city :String?
}
let street = john.residence?.address?.streetName!
在上面的代碼中,我說如果居住不是空的,他們前進。當你到達streetName然後給我的價值,我不在乎如果streetName是零隻是拋出一個錯誤,但評估正確。
最終的街道參數包含一些「親愛的車道」,而不是「親愛的車道」。這是爲什麼?