2017-07-21 3 views
0

Ich habe mich bereits ausführlich mit anderen Posts über Seg-Fehler in Swift befasst und eine gefunden, die mein Problem aufzeigt, aber jetzt ist meine Frage, wie repariere ich es? Ich fand den Fehler als meine signIn-Funktion (Hinweis: Ich habe den Namen nicht geändert, er funktioniert tatsächlich als eine SIGNUP-Funktion und erstellt Benutzer) und wenn ich es auskommentiere, wird es das Problem los. Wie auch immer, ich brauche es irgendwie, also wie repariere ich es?Swift - Befehl fehlgeschlagen aufgrund von Signal: Segmentation Fault 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! 
        ]) 
      } 
     }) 
    } 
} 

Antwort

1

Wir nicht wirklich können Ihnen ohne ein vollständiges Fehlerprotokoll helfen Sie jedoch viel Kraft auspackt (!) haben. Wenn eine Zeichenfolge null ist, stürzt Ihre App ab. Stattdessen sollten Sie bedingt auszupacken:

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

gleiche Logik auch für user geht.

Nur Kraft auspacken, wenn Sie sicher sind, haben Sie nicht nil. Sicherer Weg zum Absturz.

Verwandte Themen