2014-11-08 48 views
0

我需要創建這個if語句:如果(控制器&& controller.view.superview ==無)斯威夫特

if (controller && controller.view.superview == nil) 
斯威夫特

這是我做的:

if controller != nil && controller!.view!!.superview != nil 

這是我的聲明控制器:

var controller: AnyObject? = self.viewControllers[page] 

self.viewControllers包含任何NSNull()或UIViewController的

請讓我知道如果這是正確的方法,或者有一些捷徑。

在此先感謝!

+0

有一個要付出代價的選配,可讀性和簡潔是成本的一​​部分。如果控制器沒有視圖,您仍然會崩潰。明確的解包是新的罪惡。 – zaph 2014-11-08 18:59:29

+0

在Objective-C中'NSNull'和'nil'是不同的。我不確定Swift如何處理它們。 – nhgrif 2014-11-08 19:47:05

+0

NSNull是一個Objective-C類,Swift可以將它作爲Objective-C類處理。但是NSNull最常用,因爲你不能在Objective-C中將nil存儲到數組或字典中,並且在Swift中你可以這樣做,所以它不太有用。它對JSON解析器仍然有用。 – gnasher729 2014-11-08 22:26:33

回答

0

嘗試

if (controller?.view!.superview == nil) 
+0

不錯,但在Swift中不需要括號,對吧?我們確實希望成爲真正的斯威夫特。 – zaph 2014-11-08 20:21:05

+0

這給我帶來了編譯時錯誤:「UIView?沒有名爲'superview'的成員」 – ppalancica 2014-11-08 23:12:29

+0

@ppalancica:嘿,對不起,我沒有編譯該代碼,嘗試解開UIView!操作員,我已經更新了答案 – BaSha 2014-11-09 16:43:19