gpt4 book ai didi

swift - 在 IBAction 中调用其他函数之前如何完成一个函数?

转载 作者:搜寻专家 更新时间:2023-10-31 22:32:58 24 4
gpt4 key购买 nike

我无法理解完成处理程序。

我有一个 textFieldEditingDidChange IBAction,它首先在文本字段输入上调用 verify() 函数,然后在 apply 返回的 bool 值上调用 if 语句问题是 if 语句在 verify() 完成之前开始

代码如下:

@IBOutlet weak var myTextField: UITextField!

@IBAction func myTextFieldEditingDidChange(sender: AnyObject) {

let yo = verify(myTextField.text!)
print("\(yo)") // it always prints "true" because verify hasn't finished

}


func verify(myText: String) -> Bool {
var result = true
// some code that fetches a string "orlando" on the server
if myText == "orlando" {
result = false
}
return result
}

我怎样才能使打印语句或任何代码在验证已定时执行后发生?谢谢

最佳答案

像这样:

func verify(myText: String, completion: (bool: Bool)->()) {
var result = true
// some code that fetches a string "orlando" on the server
if myText == "orlando" {
result = false
}
completion(bool: result)
}

然后您在 IBAction 中这样调用它,并带有尾随闭包:

verify(myTextField.text!) { (bool) in
if bool {
// condition in `verify()` is true
} else {
// condition in `verify()` is false
}
}

注意:在你说“一些在服务器上获取字符串“orlando”的代码”的地方,注意不要在异步调用之后设置新的completion,否则你仍然会遇到同样的问题......应该在与异步调用结果相同的范围内使用完成。

关于swift - 在 IBAction 中调用其他函数之前如何完成一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35702286/

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