gpt4 book ai didi

ios - Swift 中的回调函数语法

转载 作者:IT王子 更新时间:2023-10-29 05:13:35 24 4
gpt4 key购买 nike

我正在尝试将一个函数传递给另一个函数,然后执行传递的函数并将一个变量传递给它。

这是我的代码:

func showStandardPrompt(prompt:String,view: UIViewController,numberInput: Bool, callback: (()->(String))?) {
let alert = UIAlertController(title: "Input Data", message: prompt, preferredStyle: .Alert)
alert.addTextFieldWithConfigurationHandler { (textField) in
if numberInput {
textField.keyboardType = .NumberPad
}
}

let OKAction = UIAlertAction(title: "OK", style: .Default) { (action) in
let field = alert.textFields![0] as UITextField
callback?(field.text!)
}

alert.addAction(OKAction)
let CancelAction = UIAlertAction(title: "Cancel", style: .Default, handler: nil)
alert.addAction(CancelAction)
view.presentViewController(alert,animated: true, completion: nil)
}

我得到的错误是在

callback?(field.text!)

错误是“无法将‘String’的值类型转换为预期的参数类型‘()’。我知道这是语法问题 - 只是不知道它应该是什么。

最佳答案

Rob 的回答是正确的,虽然我想分享一个简单的工作回调/完成处理程序的示例,您可以下载下面的示例项目并试验 getBoolValue 的输入。

swift 5:

func getBoolValue(number : Int, completion: (Bool)->()) {
if number > 5 {
completion(true)
} else {
completion(false)
}
}

getBoolValue(number: 2) { (result) -> () in
// do stuff with the result
print(result)
}

重要的是要理解:

(String)->() // takes a String returns void
()->(String) // takes void returns a String

关于ios - Swift 中的回调函数语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33290564/

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