【发布时间】:2018-07-13 06:40:12
【问题描述】:
我正在努力学习 swift 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
}
}
}
NewUserVC.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)
}
}
【问题讨论】:
-
我真的不知道你在做什么,但你的代码试图改变作为参数传递的常量值,你不能这样做并且无论如何都没有效果。您是否尝试返回错误?
-
我正在尝试返回错误,如果文本字段为空它将返回错误...
-
以上函数不返回任何东西,也改一下
-
尝试将输入
error设置为inout怎么样?你应该可以修改它。