2017-04-19 47 views
0

UIView的superview屬性是可選的:UIView?。在我的課堂上,我知道在初始化我的視圖後,子視圖將始終具有一組超視圖。有沒有比childview.superview!更乾淨的東西?清潔的方式訪問Swift中的超級景觀?

下面是一些例子背景:

bgView.constrain_edges(to: bgView.superview!) 
+0

我不知道'clean'是什麼意思。 'bgView.superview!'對我來說已經很乾淨了。你想要什麼? – Sweeper

回答

1

確保更清潔的方式來做到這一點是:

if let superview = self.superView { 
    bgView.constrain_edges(to: superview) 
} 

有條件展開自選是訪問任何可選值包括視圖的superView清潔方式。通常在你的代碼中使用! bang運算符來訪問選項會讓你的代碼感到悲傷。安全地打開選項或使用默認選項(以下)使您的代碼快樂。

bgView.constrain_edges(to: self.superView ?? self.view) 
+0

除非我100%確定我的超級觀點已設定。 – GoldenJoe

+1

在這種情況下,您可以使用bang運算符。但只有當你承諾成爲一個好男孩。 –

+1

這已經足夠讓Swift把我當成一個孩子。你不開始。 – GoldenJoe