2017-04-07 4 views
0

これは、アプリケーションからユーザーを登録し、MySQLデータベースに登録されているプロジェクトです。これはSwift 2.3で動作しますが、私はSwift 3でそれをやりたいのですが、それを修正する方法はわかりません。Swift 2.3から3への変換エラー:typeの引数リストでdataTaskを呼び出すことはできません

ERROR on URLSESSIONS.shared.dataTask

コード:

else{ 

     let url = URL(string: "http://localhost/billpain/secure/register.php")! 
     let request = NSMutableURLRequest(url: url) 
     request.httpMethod = "POST" 
     let body = "username=\(usernameTxt.text!.lowercased())&password=\(passwordTxt.text!)&email=\(emailTxt.text!)&fullname=\(firstnameTxt.text!)%20\(lastnameTxt.text!)" 
     request.httpBody = body.data(using: String.Encoding.utf8) 

     **URLSession.shared.dataTask(with: request, completionHandler: {(data:Data?, response:URLResponse?, error:NSError?) in** 

      if error == nil { 
       DispatchQueue.main.async(execute: { 

        do { 
         let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary 

         guard let parseJSON = json else { 
         print ("Error while parsing") 
          return 
         } 
         let id = parseJSON["id"] 
         if id != nil { 

          print(parseJSON) 

         } 

        } catch { 
         print("Caught an error: \(error)") 
        } 

       }) 

      } else{ 
       print("error: \(error)") 
      } 

     }).resume() 
+0

http://stackoverflow.com/questions/37812286/swift-3-urlsession-shared-ambiguous-reference-to-member-datataskwithcomplet? – Larme

+1

なぜ '.mutableContainers'オプションを指定しますか?JSONを不変オブジェクトにキャストするのはなぜですか? – vadian

+0

@kkakkurt:編集に関して、コードの書式設定にソフトウェアパッケージの名前を追加しないでください。 SwiftとMySQLはコードではなく固有名詞です。 – halfer

答えて

0
let url = URL(string: "http://localhost/billpain/secure/register.php")! 
var urlRequest = URLRequest(url: url) 
urlRequest.httpMethod = "POST" 
let body = "username=\(usernameTxt.text!.lowercased())&password=\(passwordTxt.text!)&email=\(emailTxt.text!)&fullname=\(firstnameTxt.text!)%20\(lastnameTxt.text!)" 
urlRequest.httpBody = body.data(using: String.Encoding.utf8) 

let task = URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in 
if let error = error { 
    print("error:", error) 
    return 
} 

do { 
    guard let data = data else { return } 
    guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: AnyObject] 
else { return } 
    print("json:", json) 
} catch { 
    print("error:", error) 
} 
}task.resume() 
+0

}) }他{ プリントが。( "エラー:\(エラー)") } })再開() }。連続した文に関するエラー – amr07

+0

.task.resume()エラー:未解決の識別子 'task'の使用 – amr07

+0

編集の編集の回答を確認 –

関連する問題