我可以在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之外正常工作
答案 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
用作类型作为常规值,没有已定义/已知类型。