我在Swift中有一个函数,如下所示:
@IBAction func doSomething(_ sender: AnyObject) { }
我需要将sender
设置为NSMenuItem
类型,所以我要加护卫检查它:
guard let menuItem = sender as? NSMenuItem else { return }
但是,如果我的应用程序逻辑中出现一些严重的错误,这将使应用程序继续运行,从而导致传递不同的对象类型。 仅仅使应用程序崩溃,而不是用神秘的无法正常工作的功能向用户“展示”会更好吗?
检查这些超基本假设并做出反应的最佳方法是什么?
答案 0 :(得分:1)
请注意,您可以这样编写@IBAction
:
@IBAction func doSomething(_ sender: NSMenuItem)
sender
不必是AnyObject
。
在其他情况下,如果您想使用guard
语句崩溃,则可以执行以下操作:
guard ... else { fatalError("a message") }
fatalError
返回Never
,因此可以在else
子句中使用。