swift2で書かれた下記コードをswift3でビルド使用とすると、
dataTask(with: request, completionHandler: の部分で
「Cannot invoke 'dataTask' with an argument list of type '(with: NSMutableURLRequest, completionHandler: (Data?, URLResponse?, NSError?) -> ())'」
エラーが発生します。swift3の書き方を教えてください。
class RegisterVC: UIViewController {
@IBOutlet var usernameTxt: UITextField! @IBOutlet var passwordTxt: UITextField! override func viewDidLoad() { super.viewDidLoad() } @IBAction func register_click(_ sender: AnyObject) { let url = URL(string: "http://localhost/register.php")! let request = NSMutableURLRequest(url: url) request.httpMethod = "POST" let body = "username=\(usernameTxt.text!.lowercased())&password=\(passwordTxt.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 { // get json result let json = try JSONSerialization.jsonObject(with: Data!, options: .mutableContainers) as? NSDictionary // assign json to new var parseJSON in guard/secured way guard let parseJSON = json else { print("データエラー") return } let id = parseJSON["id"] // successfully registered if id != nil { UserDefaults.standard.set(parseJSON, forKey: "parseJSON") user = UserDefaults.standard.value(forKey: "parseJSON") as? NSDictionary DispatchQueue.main.async(execute: { appDelegate.login() }) // error } else { // get main queue to communicate back to user DispatchQueue.main.async(execute: { let message = parseJSON["message"] as! String appDelegate.infoView(message: message, color: colorSmoothRed) }) return } } catch { // get main queue to communicate back to user DispatchQueue.main.async(execute: { let message = String(error) appDelegate.infoView(message: message, color: colorSmoothRed) }) return } }) // if unable to proceed request } else { // get main queue to communicate back to user DispatchQueue.main.async(execute: { let message = error!.localizedDescription appDelegate.infoView(message: message, color: colorSmoothRed) }) return } // launch prepared session }).resume() }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/04 07:10