调用performSegue函数时出错

时间:2017-05-03 09:04:39

标签: swift xcode uistoryboardsegue

我可以在alamofire验证处理程序之外调用我的performSegue。但是我希望在alamofire请求成功之后发挥作用

这是我的代码

Alamofire.request("link", method: .post, parameters: parameters!, encoding: JSONEncoding.default).responseJSON { response in
                switch response.result {
                case .success:
                    performSegue(withIdentifier: "successRegistration", sender: Any?)
                case .failure(let error):
                    print(error)
                }
            }

问题出现在以下一行

performSegue(withIdentifier: "successRegistration", sender: Any?)

它显示以下错误

  

类型名称后的预期成员名称或构造函数调用

和xcode给了我两个修复,一个是将Any?更改为Any?(),这会给我另一个错误,如下所示:

  

无法为“Any”类型调用初始值设定项没有参数

另一个解决方法是将Any?更改为Any?.self,这会在下面显示另一个错误:

  

关闭时隐式使用'self',使用'self'。使捕获语义显式

当我将Any?更改为nil

时,会发生同样的问题(上述)

导致此错误的原因是什么? (当我将performSegue更改为Any?时,知道nil函数在Alamofire之外正常工作

3 个答案:

答案 0 :(得分:4)

self.performSegueWithIdentifier("successRegistration", sender: nil)

尝试使用" self"在performSegue函数之前。

答案 1 :(得分:1)

为什么你通过“任何?”作为论点。它类似于Int或Bool等数据类型。如果你想传递任何东西,只需发送nil。

答案 2 :(得分:0)

试试这个:

self.performSegue(withIdentifier: "successRegistration", sender: nil)

一些注意事项:

  • 在一个闭包中,你总是需要使用self来引用外部对象。在您的情况下,那将是UIViewControlller

  • Any是类型名称(协议),而不是值。指定"清空"值,请改用nil。将Any用作类型作为常规值,没有已定义/已知类型。