swift - 如何在为 segue 方法准备中传递捕获的错误?
问题描述
视图加载,检查某些内容,检查将失败并抛出异常,如示例所示,该异常将被捕获。在这种情况下,我想通过 segue 显示错误视图。如何通过 prepare segue 方法传输捕获的错误?我唯一的想法是将 errormsg,errorMsgDetail 存储到类属性中。有没有更直接的方法?
override func viewDidAppear(_ animated: Bool) {
do {
try CheckAndCopyDatabase(filename: "test.db");
} catch ApplicationError.configurationError(let errorMsg, let errorMsgDetail) {
performSegue(withIdentifier: "segueStartup2Exit", sender: self);
} catch {
}
performSegue(withIdentifier: "segueStartup2Begin", sender: self);
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.isKind(of: segueStartup2Exit.self) {
if let vc = segue.destination as? ViewControllerExit {
vc.errorMsg = <--- errorMsg
vc.errorMsgDetail = <--- errorMsgDetail
}
}
}
解决方案
创建一个实例变量errorStuff:
var errorStuff: (errorMessage: String, errorDetail: String)?
在调用之前在你的 catch 块中设置实例变量performSegue(withIdentifier:sender:)
。然后在您的prepare(for:sender:)
方法中,获取您的元组的值并将它们传递到目的地。
推荐阅读
- python - 在 Python 中的 while 循环中附加列表会出现错误消息“列表索引超出范围”
- php - 您可以将一个字符串连接到一行中的两个变量吗?
- javascript - 缩放 HTML5 画布上下文以垂直适合图像
- c# - 统一不同格式的 JSON - C# WebApi
- angular - 使用 Angular 从 web api 获取与登录用户相关的数据
- c# - 如何将 XML 节点值合并到一个节点中,每 2 个值用斜线分隔
- text - 有什么方法可以区分 Ram/Storage 吗?从电话标题中提取特征
- python - 使用 Openpyxl 和 Xlwings 评估索引匹配;公式返回,而不是值
- c - “rand()% 11”是什么意思,这和“rand()% 10+1”有什么区别?
- c++ - 调试解决方案,对某些操作的每个输出都有#if