2017-07-21 18 views
0

私はすでに、segフォールトについて迅速に他の投稿を幅広く見てきましたが、私の問題点を特定したものが見つかりました。私はエラーが私のsignIn関数であることを発見した(注:私は名前を変更していない、それは実際にSIGNUP関数として働き、ユーザーを作成する)、私はそれをコメントアウトすると問題を取り除く。しかし、私はそれを必要とするので、どうすれば修正できますか?Swift - コマンドで失敗しましたシグナル:セグメンテーションフォールト11

import UIKit 
import Firebase 
import FirebaseAuth 
import FirebaseDatabase 

class SignUpViewController: UIViewController { 
    @IBOutlet weak var emailField: UITextField! 
    @IBOutlet weak var passwordField: UITextField! 
    @IBOutlet var usernameField: UITextField! 

    var ref: DatabaseReference! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     ref = Database.database().reference() 
    } 

    // Actually Sign Up button 
    @IBAction func SignIn(_ sender: AnyObject) { 
     Auth.auth().createUser(withEmail: emailField.text!, password: passwordField.text!, completion: { (user, error) in 
      if error != nil { 
       print(error!.localizedDescription) 
      } else { 
       print("User created...") 
       self.ref.child("UserProfile").child(user!.uid).setValue([ 
        "username" : self.usernameField.text! 
        ]) 
      } 
     }) 
    } 
} 

答えて

1

私たちは本当にしかし、あなたは多くの力アンラップ(!)を持って、完全なエラー・ログなしであなたを助けることはできません。いずれかの文字列がnullの場合、アプリケーションはクラッシュします。代わりに、条件付きでアンラップする必要があります

if let email = emailField.text, let password = passwordField.text { 
    Auth.auth().createUser(withEmail: email, password: password! 
    ..... 
} 

同じロジックもuserのために行きます。

あなたがnilを持っていないことを確認したら、強制的にアンラップするだけです。確かにクラッシュする方法。

関連する問題