Поймать несовместимое состояние приложения с помощью оператора Swift `guard`? - PullRequest
0 голосов
/ 25 января 2019

У меня в Swift есть такая функция:

@IBAction func doSomething(_ sender: AnyObject) { }

Мне нужно, чтобы sender был типа NSMenuItem, поэтому я проверяю его с помощью охранника:

guard let menuItem = sender as? NSMenuItem else { return }

Но это молча позволит приложению продолжаться, если в моей логике приложения есть серьезная ошибка, приводящая к передаче другого типа объекта. Не лучше ли просто вывести приложение из строя, а не «подарить» пользователю таинственно нерабочую функцию?

Как лучше всего проверить и отреагировать на эти сверхосновные предположения?

1 Ответ

0 голосов
/ 25 января 2019

Обратите внимание, что вы можете написать свои @IBAction s следующим образом:

@IBAction func doSomething(_ sender: NSMenuItem)

sender не обязательно должно быть AnyObject.

Однако в других ситуациях, если выЕсли вы хотите завершить работу с оператором guard, вы можете сделать следующее:

guard ... else { fatalError("a message") }

fatalError возвращает Never, поэтому его можно использовать в предложении else.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...