2015-10-30 17 views
2

我正在使用下面的代碼來設置根視圖控制器。但它給我的錯誤:從'UIViewController?'下載到'UIViewController'只解開optionals;你的意思是使用'!'嗎?

let storyboard = UIStoryboard(name:"SignUp", bundle:nil) 
    let viewController = storyboard.instantiateInitialViewController() as! UIViewController 
    self.window!.rootViewController = viewController 

我收到錯誤,如Downcast from 'UIViewController?' to 'UIViewController' only unwraps optionals; did you mean to use '!'?

我認爲,它與「as!」的事,但它是在新的迅速出臺。

有沒有人有想法?

+0

你寫的代碼運行良好。是的,你必須把「!」 – Saty

+0

但是,我將不得不把「!」 ? –

+0

是的,這是正確的方式! – Saty

回答

2

兩種方法可以做到這一點,我想

更安全的一個:

let storyboard = UIStoryboard(name:"SignUp", bundle:nil) 
if let viewController = storyboard.instantiateInitialViewController(){ 
    self.window!.rootViewController = viewController 
} 

編輯:刪除as? UIViewController

的一個編譯器建議:

let storyboard = UIStoryboard(name:"SignUp", bundle:nil) 
let viewController = storyboard.instantiateInitialViewController()! 
self.window!.rootViewController = viewController 

基本上編譯只是讓你知道在這個代碼中的10個基本上與使用一個相同!

+0

不需要'as? UIViewController'在第一個例子中。這是返回類型;你可以放下它。 –

+0

這是一個愚蠢的錯誤。謝謝你糾正我。 – Moriya

相關問題