这是我的代码:
let request = NSMutableURLRequest(URL: NSURL(string: "http://www.example.com/submit.php")!)
request.HTTPMethod = "POST"
let postString = "user_name="+user_name+"&first_name="+first_name.text+"&last_name="+last_name.text+"&company_name="+company_name.text+"&location="+location.text+"&phone="+phone.text+"&website="+website.text+"&email="+email.text+"&about="+about.text
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(responseString)")
}
task.resume()
当我尝试运行该应用时,它在postString
上给出了以下错误:
表达太复杂,无法在合理的时间内解决;考虑将表达式分解为不同的子表达式
答案 0 :(得分:1)
试试这个:
let parameters = ["user_name" : user_name,
"first_name" : first_name.text,
"last_name" : last_name.text,
"company_name" : company_name.text,
"location" : location.text,
"phone" : phone.text,
"website" : website.text,
"email" : email.text,
"about" : about.text].map { "\($0)=\($1 ?? "")" }
let postString = parameters.joinWithSeparator("&")
解决方案首先会创建一个包含参数及其值的字典(这也会提高代码的可读性和可维护性)。
然后它将执行" map"在该字典上,将其转换为包含key=value
的字符串数组(如果text
上的UITextField
是可选的,则将其设置为空字符串,如果它为零)
最后,它将通过使用分隔符&