Jo *_*Doe 0 closures asynchronous ios swift
所以基本上,我试图找回函数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
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
由于您从未调用完成处理程序,因此不会调用它.
您需要completion("some string literal or string variable")在foobar方法中调用.
func foobar(completion: @escaping (_ info: String) -> ()) {
var result = ""
print("this prints too")
completion(result)
}
Run Code Online (Sandbox Code Playgroud)
但请记住,只有在进行某些异步处理时,完成处理程序才有用.如果foobar没有异步执行任何操作,那么您不应该将其设置为使用完成处理程序.只需一个简单的返回值即可.
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |