【问题标题】:Showing Alerts from Model显示来自模型的警报
【发布时间】:2016-09-25 23:21:40
【问题描述】:

我正在尝试从 Firebase 后端向我的用户显示错误警报。

我根据 MVC 分离了我的 Signup 函数并将其放入模型中,但是 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)
        }
    })
}

查看控制器

@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 进行研究。

【问题讨论】:

    标签: ios swift model-view-controller firebase


    【解决方案1】:

    在模型的 signUp 方法中添加一个完成块。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多