gpt4 book ai didi

swift - 如何使用完成处理程序和参数调用函数

转载 作者:行者123 更新时间:2023-11-30 11:06:25 25 4
gpt4 key购买 nike

我有一个 func getData(completed: @escaping ()->()) ,它在一个类中使用完成处理程序创建 alamofire 请求。当 alamofire 结束它的工作时,在这个函数内部我调用 Completed() 来通知该函数结束了它的工作。点击按钮后,在其他 View Controller 中调用此函数,但没有完成处理程序,然后在该调用内部,我使用下载的数据重新加载表格 View ,如下所示。

现在我想向此函数添加附加参数,以允许用户修改 alamofire 请求的 URL 并获取自定义响应。参数将在其他文本字段中设置。但现在当我调用 downloadRepositories() 时,我不能省略调用完成参数。

How can i avoid calling completion handler in it or what other completion handler should i implement?

当前 alamofire 请求

 class DataClass {

func getData(completed: @escaping () -> ()){
//alamofire request
Alamofire.request(url).responseJSON{
//reponse
completed()
}

}

它的实现

class OtherVC {

var dataClass = DataClass()

@objc func searchBtnTapped(sender: UIButton!){
dataclass.getData(){
self.TableView.reloadData()
}
}
}

我想做什么

class DataClass {

func downloadRepositories(completed: @escaping () -> (), parameter1: String, parameter2: String) {

let parameters: Parameters = [ "parameterA": parameter, "parameterB": parameter2 ]

Alamofire.request(url, parameters: parameters).responseJSON{
//response
completed()
}

修改后的func的实现

 class OtherVC {

var dataClass = DataClass()

@objc func searchBtnTapped(sender: UIButton!){
dataclass.getData(parameter1: someTextField.text, parameter2: someTextField2.text){
self.TableView.reloadData()
}
}
}

当然我知道不可能像这样在 func 调用中传递参数,但是如何才能以其他方式做到这一点?

最佳答案

像这样使用:

func downloadRepositories(parameter1: String, parameter2: String, completed: @escaping () -> ()) {

let parameters: Parameters = [ "parameterA": parameter, "parameterB": parameter2 ]

Alamofire.request(url, parameters: parameters).responseJSON {
//response
completed()
}

关于swift - 如何使用完成处理程序和参数调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52665592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com