2016-09-25 3 views
0

Я пытаюсь показать оповещение об ошибках для своих пользователей из бэкэнда Firebase.Оповещения о предупреждениях от модели

Я отделил функцию регистрации в соответствии с MVC и поместил ее в модель, однако print(error!.localizedDescription) вложен в if statement внутри моей модели. Я не могу просто сделать alertController, потому что он не относится к виду в main.storyboard.

Как я могу извлечь эту ошибку из своей модели и отобразить ее обратно на экране через VC?

МОДЕЛЬ

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 это структура, которую я называю.

Спасибо за помощь, я все еще пытаюсь обмотать голову вокруг MVC.

ответ

2

Добавить блок завершения к методу signU вашей модели.

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) 
    }) 
} 

Затем вы предоставляете закрытие, которое будет вызываться, когда пользователь не создан.

@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

Это сработало отлично! Спасибо! – ishkur88

Смежные вопросы