2017-02-24 8 views
1

次のエラーが私のアプリを実行して、ユーザーを登録しようとした後に表示されます。SWIFT:エラーEXC_BAD_INSTRUCTION

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_l386_INVOP,s subcode=0x0)

これは、コードの末尾に表示されます。

} as! (Data?, URLResponse?, Error?) -> Void)

let myUrl = NSURL(string: "http://127.0.0.1/MySQL_PHP/userRegister.php") 
     var request = URLRequest(url: myUrl as! URL) 
     request.httpMethod = "POST" 
     // let config = URLSessionConfiguration.default 
     let session = URLSession.shared 

     let postString = "email=\(userEmail)&passwort=\(userPasswort)&vorname=\(userVorname)&nachname=\(userName)&benutzer=\(userBenutzer)" 
     request.httpBody = postString.data(using: String.Encoding.utf8) 



     let task = session.dataTask(with: request, completionHandler: { (data: Data?, response: URLResponse?, error: Error?) in 
      if error != nil { 
       print("error=\(error)") 
       return 
      } 



      var err: NSError? 
      var json = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary 

      if let parseJSON = json { 
       var resultValue = parseJSON["status"] as? String 
       print("result: \(resultValue)") 

       var isUserRegistered: Bool = false 
       if (resultValue == "Success") { 
        isUserRegistered = true 
       } 

       var messageToDisplay: String = parseJSON["message"] as! String! 
       if (!isUserRegistered){ 
        messageToDisplay = parseJSON["message"] as! String! 
       } 
       DispatchQueue.main.async(execute: { 

        var myAlert = UIAlertController(title:"Alert", message: messageToDisplay, preferredStyle: UIAlertControllerStyle.alert) 

        let okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.default){ 
         action in 
         self.dismiss(animated: true, completion: nil) 
        } 
        myAlert.addAction(okAction) 
        self.present(myAlert, animated: true, completion: nil) 

       }) 
      } 
     } as! (Data?, URLResponse?, Error?) -> Void) 

     task.resume() 
+0

コンソール/デバッガ内の任意のエラーメッセージ? – Larme

+0

いいえ、何もありません。ちょうどEXC_BAD_INSTRUCTION –

+0

私はあなたがなぜそこにキャストを持っているのかわかりません。ただそれを削除します。 – Hamish

答えて

2

エラー誤解を招く。これは、データタスククロージャとは直接関係しません。 do - catchブロックは周りtry JSONSerialization

不足しているため、エラーが発生し

let task = session.dataTask(with: request) { (data, response, error) in 

... 

} 

まず第一には、末尾の閉鎖構文を使用して、すべての

let task = session.dataTask(with: request, completionHandler: { (data, response, error) in 

... 

}) 

かさえまだ短いで鋳造しません。

エラーがdo - catchを追加することによって、どちらか消えますブロックするか使用するtry!

そして、最後に提案してください:NSArray/NSDictionaryをSwiftで使用しないでください。あなたは強いタイプのシステムと戦っている。

関連する問題