2017-07-27 55 views
-2
var neilPeart: Drummer? = Drummer() 

var rush: Band? = Band(drummer: neilPaert!) 

假設我們有一個名爲neilPeart的可選類型Drummer的實例,以及一個名爲rush的可選類型的Band。 Drummer實例有一個band屬性。如果我想改變neilPeart的band屬性,「neilPeart?.band = rush」和「neilPeart !.band = rush」有什麼區別差異?和!何時使用可選類型的實例?

+1

?意味着對象可以在未來,!意味着它必須有一個指定的值。 – vaibhav

+0

如果'neilPeart'爲'nil','neilPeart?.band'不會崩潰。另一個使用'!'會崩潰。請參閱[如何評估](https://stackoverflow.com/a/38041086/5175709) – Honey

+5

閱讀基本的Swift文檔可以在這裏幫助很多... – Jerrybibo

回答

2
  • ?如果沒有值,則將其設置爲零
  • !將強制解包的價值,並將崩潰的應用程序,如果沒有價值
2

選項使用?標記這意味着如果我說var title: String?。這意味着標題可能包含一個值或零。 !!點用於展開可選值。這可能會給你造成一個問題,如果你的價值爲零,會給你一個錯誤。該錯誤將導致無法打開無零件對象。希望這可以幫助!