gpt4 book ai didi

xml - 快速完成处理程序

转载 作者:行者123 更新时间:2023-11-28 15:35:41 25 4
gpt4 key购买 nike

我目前正在学习 swift,几个小时以来我一直在尝试理解一个错误。由于查询,我正在尝试从 php 脚本获取 xml 文件,并且我正在使用完成处理程序来获取这些查询的结果作为回调。

问题是我对这些技术不满意,它说缺少参数。

这是使用完成处理程序的函数:

func connect(completion: (String) -> ())
{
let password : String = "psw"
let login : String = "log"
let postString : String = "login=\(login)&password=\(password)"
let urlString = "http://www.mydomain.fr/script.php"
var output : String = ""
let request = NSMutableURLRequest(url: NSURL(string: urlString)! as URL)
request.httpMethod = "POST"
request.httpBody = postString.data(using: String.Encoding.utf8)

let task = URLSession.shared.dataTask(with: request as URLRequest){
data, response, error in

if error != nil {
print("error=\(error)")
return
}
let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("responseString = \(responseString)")
output = responseString as! String
}
task.resume()
completion(output)
}

下面是我调用这个函数的代码:

    func misctest()
{
let dbc : dataBaseCloner = dataBaseCloner()
let output: String
connect(completion : { (output) in
print(output)
})
}

这段代码显示有关连接调用的错误:

>>>Missing argument for parameter #2 in call

我做错了什么?为什么它需要两个参数?

非常感谢您的帮助。

艾尔巴托

最佳答案

我已经复制粘贴了您的代码,它可以正常运行,没有任何错误。尝试关闭和打开 Xcode。

您还必须将 completion(output) 移动到您的任务完成,因为它是异步的,否则您的输出将始终为空:

(...)
let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("responseString = \(responseString)")
output = responseString as! String
completion(output)
}
task.resume()
(...)

关于xml - 快速完成处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44308747/

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