2016-03-15 2 views
1

Предположим, что я объявил UIViewController как свойство в своем классе. В некоторых случаях мы можем неявно присваивать этому свойству UINavigationController.Быстрое неявное преобразование типа

UIViewController *someNavigationController 

В Objective-C Я могу простую Присвоить

UIViewController *vc = self.someNavigationController; 

if (vc) 
{ 
//then do something 
} 

Как я понял, в Swift я должен сделать что-то вроде этого, если мой self.centerViewController объявлен UIViewController. Право

let nvc = self.centerViewController as! UINavigationController 

Alos как я могу проверить

if nvc != nil 

Он говорит, что это не может быть равен нулю.

ответ

2

as! UINavigationController означает, что это вынужденная подавленным: он был разворачивал, он больше не является необязательным, поэтому он не может быть нулевым больше - а если были ноль (или не downcastable), он бы разбился приложение ,

Вы можете использовать опциональный связывание вместо:

if let nvc = self.centerViewController as? UINavigationController { 
    // here, nvc is not nil and is a UINavigationController, you can use it 
} else { 
    // here, either self.centerViewController is nil or we can't cast it as a UINavigationController 
} 
3

вы также можете проверить, как это: -

if self.centerViewController is UINavigationController 
{ 
// here self.centerViewController must be an instance of UINavigationController and not nil 
    let nvc = self.centerViewController as! UINavigationController 
} 
else { 
     // here May be nil or may be an instance is of an other class 
} 
Смежные вопросы