当守卫失败时该怎么办
What To Do When a Guard Fails
我的问题基本上是,当守卫失败时,有哪些正常的事情要做?我主要是在 iOS 应用程序的上下文中询问,其中用户交互请求发生某事并且现在必须执行某事。由于 Swifts 类型安全(我喜欢这一点),我们现在可以处理可选值。
这是一个例子:
guard let textField = (tableView.cellForRow(at: IndexPath(row: 0, section: 1)) as? TextInputTableViewCell)?.inputField else {
print("Couldn't get the keyboard when a user clicked on done, method: accesoryKeyboardDone")
return
}
通常,我会记录失败并 return,或者如果存在值很重要,我会 fatalError
退出该方法。这似乎是错误的方法?有什么方法可以回退到更好的情况并仍然执行用户要求的操作吗?我喜欢安全地解包值,即使我需要它们在那里,因为强制解包让我感觉很脏,好像我没有做正确的事情。这是我应该做的事情还是在这些情况下可以接受强制展开?
您处理可选值的方式有哪些?我真的只是在寻找其他人如何处理它的意见和技巧。
谢谢!
在 UIAlertController
中显示错误消息。
let alertController = UIAlertController(title: "Default Style", message: "A standard alert.", preferredStyle: .Alert)
let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { action in
// ...
}
alertController.addAction(cancelAction)
let OKAction = UIAlertAction(title: "OK", style: .Default) { action in
// ...
}
alertController.addAction(OKAction)
self.presentViewController(alertController, animated: true) {
// ...
}
示例代码来自 NSHipster.
用户应该只在您预计会失败的情况下收到警报;例如,由于没有互联网而无法通过的网络请求。您不必为每个可能的错误提醒用户;它通常足以记录它或只是退出范围。此外,您并不总是需要弹出警告框。以 DZNEmptySet 为例。
我的问题基本上是,当守卫失败时,有哪些正常的事情要做?我主要是在 iOS 应用程序的上下文中询问,其中用户交互请求发生某事并且现在必须执行某事。由于 Swifts 类型安全(我喜欢这一点),我们现在可以处理可选值。
这是一个例子:
guard let textField = (tableView.cellForRow(at: IndexPath(row: 0, section: 1)) as? TextInputTableViewCell)?.inputField else {
print("Couldn't get the keyboard when a user clicked on done, method: accesoryKeyboardDone")
return
}
通常,我会记录失败并 return,或者如果存在值很重要,我会 fatalError
退出该方法。这似乎是错误的方法?有什么方法可以回退到更好的情况并仍然执行用户要求的操作吗?我喜欢安全地解包值,即使我需要它们在那里,因为强制解包让我感觉很脏,好像我没有做正确的事情。这是我应该做的事情还是在这些情况下可以接受强制展开?
您处理可选值的方式有哪些?我真的只是在寻找其他人如何处理它的意见和技巧。
谢谢!
在 UIAlertController
中显示错误消息。
let alertController = UIAlertController(title: "Default Style", message: "A standard alert.", preferredStyle: .Alert)
let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { action in
// ...
}
alertController.addAction(cancelAction)
let OKAction = UIAlertAction(title: "OK", style: .Default) { action in
// ...
}
alertController.addAction(OKAction)
self.presentViewController(alertController, animated: true) {
// ...
}
示例代码来自 NSHipster.
用户应该只在您预计会失败的情况下收到警报;例如,由于没有互联网而无法通过的网络请求。您不必为每个可能的错误提醒用户;它通常足以记录它或只是退出范围。此外,您并不总是需要弹出警告框。以 DZNEmptySet 为例。