2016-09-25 9 views
0

Ich versuche, eine Fehlermeldung für meine Benutzer aus dem Firebase-Backend anzuzeigen.Anzeigen von Warnungen vom Modell

Ich habe meine Anmeldefunktion nach MVC getrennt und in das Modell eingefügt, aber die print(error!.localizedDescription) ist in meinem Modell in einem if statement verschachtelt. Ich kann nicht einfach eine machen, weil es nicht zu der Ansicht in main.storyboard gehört.

Wie ziehe ich diesen Fehler von meinem Modell und zeige es wieder auf der Ansicht durch die VC?

MODEL

func signUp(email: String, username: String, password: String, data: NSData!) 
{ 

    FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (user, error) in 
     if error == nil 
     { 

     self.setUserInfo(user: user, username: username, password: password, data: data) 

     } 
     else 
     { 
     print(error!.localizedDescription) 
     } 
    }) 
} 

View-Controller

@IBAction func signupButton(_ sender: AnyObject) 
    { 
    if self.emailTextField.text == "" || self.usernameTextField.text == "" || self.passwordTextField.text == "" 

    { 
     let alertController = UIAlertController(title: "Oops!", message: "Please enter a valid username, email & password", preferredStyle: .alert) 
     let defaultAction = UIAlertAction(title: "Ok", style: .cancel, handler: nil) 
     alertController.addAction(defaultAction) 

     self.present(alertController, animated: true, completion: nil) 
    } 
    else 
    { 
    let data = UIImageJPEGRepresentation(self.userProfilePicture.image!, 0.8) 

    networkingService.signUp(email: emailTextField.text!, username: usernameTextField.text!, password: passwordTextField.text!, data: data as NSData!) 
    } 
} 

NetworkingService ist die Struktur, die ich nennen.

Danke für die Hilfe, ich versuche immer noch, meinen Kopf um MVC zu wickeln.

Antwort

2

Fügen Sie der Anmeldemethode Ihres Modells einen Abschlussblock hinzu.

func signUp(email: String, username: String, password: String, data: NSData, completion: Error? ->()) 
{ 
    FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (user, error) in 
     if error == nil { 
      self.setUserInfo(user: user, username: username, password: password, data: data) 
     } 
     completion(error) 
    }) 
} 

Dann geben Sie eine Schließung an, die aufgerufen wird, wenn der Benutzer nicht erstellt wird.

@IBAction func signupButton(_ sender: AnyObject) { 

    guard 
     let email = emailTextField.text, 
     let username = usernameTextField.text, 
     let password = passwordTextField.text, 
     let image = userProfilePicture.image, 
     let data = UIImageJPEGRepresentation(image, 0.8) 
    where 
     email != "" && 
     username != "" && 
     password != "" 
    else { 
     let alertController = UIAlertController(title: "Oops!", message: "Please enter a valid username, email & password", preferredStyle: .alert) 
     alertController.addAction(UIAlertAction(title: "Ok", style: .cancel, handler: nil)) 
     present(alertController, animated: true, completion: nil) 
    } 

    networkingService.signUp(email: email, username: username, password: password, data: data) { error in 
     if let error = error { 
      print(error.localizedDescription) 
     } 
    } 
} 
+0

Das hat perfekt funktioniert! Vielen Dank! – ishkur88

Verwandte Themen