首页 > 解决方案 > ViewModel 函数:无法赋值:'error' 是 'let' 常量

问题描述

我正在尝试快速学习ViewModel,并且我创建了一个函数来处理错误。

但是当我在ViewController文件中调用该函数时,它会说:

Cannot assign to value: 'error' is a 'let' constant

有没有什么办法解决这一问题?我仍然是一名学生,正在寻找最好的建议。

非常感谢。

以下是我的代码,你们可以帮帮我。

SignUpError.swift :

class SingUpError {
    func errorMessage(name: String?, lastName: String?,email: String?, password: String?, error: String?){

        enum ErrorMessage: String {
            case noName = "Name cannot be empty"
            case noLastName = "Last name cannot be empty"
            case noEmail = "Email cannot be empty"
            case noPassword = "Password cannot be empty"
        }

        if name == "" {
            error = ErrorMessage.noName.rawValue
        }
    }
}

新用户VC.swift:

class NewUserVC: UIViewController {

    // Var
    var vm = SingUpError()

    // Outlet Text Fields

    @IBOutlet weak var nameText: UITextField!
    @IBOutlet weak var lastNameText: UITextField!
    @IBOutlet weak var emailText: UITextField!
    @IBOutlet weak var passwordText: UITextField!

    // Outlet Labels

    @IBOutlet weak var nameErrLbl: UILabel!
    @IBOutlet weak var lastNameErrLbl: UILabel!
    @IBOutlet weak var emailErrLbl: UILabel!
    @IBOutlet weak var passwordErrLbl: UILabel!


    @IBAction func submiButton(_ sender: UIButton) {
        submitData()
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    func submitData() {
        guard
            let name = nameText.text,
            let lastName = lastNameText.text,
            let email = emailText.text,
            let password = passwordText.text
            else {return}

        vm.errorMessage(name: name, lastName: lastName, email: email, password: password, error: nameErrLbl.text)
    }
}

标签: iosswift

解决方案


你需要做这样的事情

class SingUpError {
    func errorMessage(name: String?, lastName: String?,email: String?, password: String?, error: String?) -> String{

        var errorMessage : String = ""

        enum ErrorMessage: String {
            case noName = "Name cannot be empty"
            case noLastName = "Last name cannot be empty"
            case noEmail = "Email cannot be empty"
            case noPassword = "Password cannot be empty"
        }

        if name == "" {
            errorMessage = ErrorMessage.noName.rawValue
        }

        return errorMessage
    }
}  

推荐阅读