妥当な時間で解決されるにはあまりに複雑だった私のコードです:スウィフト文字列の建設はここ
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
に次のエラーを与える:
表現は合理的な時間に解決するには複雑すぎました。 (これはまた、あなたのコードの可読性と保守性を向上させるソリューションは、最初のパラメータとその値を持つ辞書を作成します
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("&")
:これを試してみてください
コンパイラがあなたを語っているものを行うと、アレイ内のすべての文字列を結合して文字列を作成します。同じ表現ですべてを詰め込むのではなく、いくつかのものを作ると、コンパイラが何が起こるかを知るのに役立ちます。 :) – Moritz
@EricDそれに感謝します。どうすればいい? – johnniexo88
あなたは 'postString'という大きな宣言をしています。一つの行にStringに追加する変数がたくさんあります。代わりに、名前のようにまずその一部を作り、これを変数に格納します。別の行を使用して残りを追加します。 'let names = xxx + xxx'のように' let postString = names + xxx + xxx'など。 – Moritz