【发布时间】:2020-03-09 18:34:25
【问题描述】:
我的应用程序出现问题,我有一个名为 signUpButtonTapped 的方法:
@objc func signUpButtonTapped(_ sender: Any) {
if !areFieldsValid()! {
// some error in textfield
theScrollView.scrollToTop()
}else { /* create user */ }
如您所见,我调用了 areFieldsValid() 方法,它会检查我所有的 textFields 包括是否使用用户名:
//MARK: Validate Fields
func areFieldsValid() ->Bool? {
var isValid = true
// check if username is valid
checkUsername(field: usernameTextField.text!) { (success) in
if success == true {
// username is taken
print("Username is taken")
self.setupUsernameTextField()
self.checkUsernameImage.image = UIImage(named: "false")
self.checkUserNameLabel.text = "Benutzername ist bereits vergeben"
isValid = false
}
}
return isValid
}
我遇到的问题是,即使用户名已经被使用,用户也会被创建,areFieldsValid 实际上应该返回false,但程序仍然继续......
我猜这是因为程序继续时数据仍在加载?我不知道如何解决这个问题,所以我很感激每一个帮助!
【问题讨论】:
-
checkUsername是一个异步函数,您可以看到它不是返回布尔值,而是给它一个完成处理程序,该处理程序在success参数中传递。因此,您的areFieldsValid函数也需要是异步的,并且需要一个完成处理程序。这些信息足以让您朝着正确的方向寻找吗? -
@KevinRenskers 感谢您的帮助!有了这个和 Ivans 的回答,我设法解决了这个问题!
标签: ios swift firebase google-cloud-firestore