首页 > 解决方案 > 如何在为 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
            }
        }
    }

标签: swiftxcode

解决方案


创建一个实例变量errorStuff:

var errorStuff: (errorMessage: String, errorDetail: String)?

在调用之前在你的 catch 块中设置实例变量performSegue(withIdentifier:sender:)。然后在您的prepare(for:sender:)方法中,获取您的元组的值并将它们传递到目的地。


推荐阅读