2015-04-14 2 views
-2

Я знаю, как использовать «?» , он используется для необязательной привязки переменных. , но я не получаю значение '?' Вот.Что такое '?' быстро входить при нажатии с одного контроллера вида на другой контроллер просмотра

let obj = self.storyboard?.instantiateViewControllerWithIdentifier("SecondViewController") as SecondViewController 
self.navigationController?.pushViewController(obj, animated: true) 

Я знаю, что ответ будет очень простым, но я новичок в Swift. Заранее спасибо.

+2

В этом случае '' был использован кто-то, кто все еще думает, что они пишут Objective-C. Оба '?' Должны быть '!', Чтобы указать ошибки разработчиков на ранней стадии./snark –

ответ

1

Это понятие называется необязательное значение. Я настоятельно рекомендую прочитать больше об этом в Apple Documentation.

В основном это служит для большей безопасности кода и предотвращения сбоев, связанных с исключениями из-за отсутствия. «Запросить», используя ? вы говорите - если это не ноль, выполните следующее: вызовите метод/переменную доступа. Это можно было бы рассматривать, как это:

self.navigationController?.pushViewController(obj, animated: true) 

равна:

if (self.navigationController != nil) { 
    [self.navigationController pushViewController:obj animated:YES]; 
} 

или Swift (разворачивание с, если позволить):

if let navController = self.navigationController { 
    navController.pushViewController(obj, animated:true) 
} 
+0

спасибо michal, я понял. Но почему вы голосуете. –

+0

Я редактировал ваш вопрос (форматирование), не проголосовал за него. – Michal

+1

Скорее всего потому, что ваш вопрос был действительно о? которая является функцией Swift, о которой вы должны знать и понимать после прочтения книги Swift, которую, конечно же, все предполагают, что вы сделали, прежде чем начинать писать код, и не имеет ничего общего с нажатием контроллера вида. – gnasher729

Смежные вопросы