gpt4 book ai didi

ios - 如果满足 else 条件,则停止程序执行并返回

转载 作者:行者123 更新时间:2023-11-28 10:55:55 26 4
gpt4 key购买 nike

在我的应用程序的注册过程中,我有两个函数 - 首先检查用户输入的句柄以查看它是否已经被占用,然后第二个函数设置它们的其余值:

@IBAction func setupDoneButtonPressed(_ sender: Any) {

checkHandle()
setUserInfo()
self.performSegue(withIdentifier: "setupToChat", sender: nil)
}

checkHandle 函数似乎在做它的工作,因为它检查数据库然后打印“else”条件打印语句 - 但是我没有看到警报,程序只是继续进入应用程序。

如果该句柄已在使用中,我需要编程停止而不是继续到 setUserInfo,然后继续进入应用程序。我想显示其中的警报,然后允许用户使用不同的句柄重试。

这是 checkHandle 函数:

func checkHandle() {

if self.handleTextField.text != nil {
if let handle = self.handleTextField.text {

let handleRef: FIRDatabaseReference = FIRDatabase.database().reference().child("users")
handleRef.queryOrdered(byChild: "handle").queryEqual(toValue: "\(handle)").observeSingleEvent(of: .value, with: { (snapshot) in

if (snapshot.value is NSNull) {
print("handle not in use") // handle not found
userRef.child("handle").setValue(handle)
} else {
print("Handle already in use. Value: \(snapshot.value)") // handle is in use
let alertController = UIAlertController(title: "Handle Taken", message: "Please choose a different handle", preferredStyle: UIAlertControllerStyle.actionSheet)

let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: {(alert :UIAlertAction!) in
})
alertController.addAction(okAction)

self.present(alertController, animated: true, completion: nil)
}

})
}
}
}

我该怎么做才能确保在已存在句柄的情况下停止注册过程?

最佳答案

你可以这样解决:

首先使 checkHandle() 成为一个完成函数,如 checkHandle(completion: @escaping (Bool) -> Void)

如果 if 条件满足,则在此函数内部调用 completion(true),否则调用 completion(false)。然后在你的按钮处理程序中使用 checkHandle() 这样的:

checkHandle { [weak self] success in 
guard success else { return }

self?.setUserInfo()
self?.performSegue(withIdentifier: "setupToChat", sender: nil)
}

关于ios - 如果满足 else 条件,则停止程序执行并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43611432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com