2016-12-12 6 views
-5

この質問は何百万回も聞かれましたが、それでも私は混乱します。 私はログインするためにサーバーに接続するアプリケーションを持っていますが、ユーザーの入力が間違っていてサーバーがnilを返すまでは問題ありません。どのように私はあなたのprint(response.result.value!)ラインで致命的なエラー:オプションの値をアンラッピングしている間に予期せずnilが見つかりました(Swift 3)

// A method for the login button 
     @IBAction func loginButton(_ sender: UIButton) { 
    parameters["email"] = email?.text 
    parameters["password"] = password?.text 
    Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody, headers: token).responseJSON { 
     (response) in 
     print(response.result.value!) 

     // Check if the servers return token and go to the next page 
     if response.result.value != nil { 
     self.performSegue(withIdentifier: "loginSegue", sender: nil) 
     } 
     if let tokenString = response.result.value as? String { 
      self.token["X-Auth-Token"] = tokenString 
     } 
    } 
} 

答えて

1

をクラッシュからの私のアプリを防ぐことができ、あなたはresponse.result.value変数をアンラップ強制的に!を使用しています。この変数はオプションです。つまり、値を持つことが保証されていません。オプションの変数に!を使用すると、基本的にコンパイラに "値を持つことを約束してくれることを心配しないでください"と伝えています。それは本当に価値がない場合はクラッシュします。

ソリューション:print(response.result.value)

に応じて、最初の行その 変更
関連する問題