Я экспериментирую с чем-то дополнительным цепочкой и двумя вопросительными знаками, но я не могу понять одну вещь. У меня есть эта часть кода:Swift 2 вопросительные знаки необязательный цепочка
if let delegate = self.delegate {
delegate.webViewControllerDidCancel()
}
else {
self.navigationController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
}
что хорошо. Работает именно то, что я хочу. Если кто-то соответствует протоколу, звоните webViewControllerDidCancel
, иначе просто dismissViewController
.
Однако я пытался сделать то же самое так
self.delegate?.webViewControllerDidCancel() ?? self.navigationController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
который кажется законным мне, а также работает, но XCode дает мне желтый восклицательный знак, говорящий
Результат вызова к '??' не используется
Этого я не могу понять. Это ?? даже должен работать таким образом?
Это не кажется законным, если '-webViewControllerDidCancel' возвращает' void' или что-то еще, что не поддается анализу. – holex
Да, это пусто. Так что это, вероятно, причина для предупреждения. В любом случае, закончил использовать более длинную версию, но я должен сказать, что это тоже работает (не уверен в побочных эффектах) – jovanjovanovic