所以基本上,我试图找回函数foobar返回的字符串。最初,我曾尝试从foobar返回字符串,但swift保持早期/异步返回?来自foobar。代码如下:
@IBAction func bAction(_ sender: UIButton) {
print("this prints")
foobar(completion: { (info) in
print("this does not print")
})
}
func foobar(completion: @escaping (_ info: String) -> ()) {
var info = ""
//insert code here
print("this prints too")
//insert more code here
}
我做错了什么?
答案 0 :(得分:7)
由于您从未调用完成处理程序,因此不会调用它。
您需要在completion("some string literal or string variable")
方法中致电foobar
。
func foobar(completion: @escaping (_ info: String) -> ()) {
var result = ""
print("this prints too")
completion(result)
}
但请记住,只有在进行某些异步处理时,完成处理程序才有用。如果foobar
没有异步执行任何操作,那么您不应该将其设置为使用完成处理程序。您只需要一个简单的返回值。