我目前正在学习swift,并且在尝试了解现在几个小时以来的错误。我试图从一个PHP脚本得到一个XML文件感谢查询,我使用完成处理程序来获取这些查询的结果作为回调。swift的完成处理程序
问题是我不熟悉这些技术,它说参数丢失。
下面是一个使用完成处理的功能:
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
我做错了什么?为什么它需要两个参数?
非常感谢您的帮助。
Elbattore
这不会修复你的错误,但你必须将“完成(输出)”移动到任务完成状态,因为它是异步的,并且没有输出将始终为空 –