当前位置: 首页 > 面试题库 >

Swift中的回调函数语法

公孙志尚
2023-03-14
问题内容

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

这是我的代码:

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的输入。

斯威夫特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


 类似资料:
  • 我试图在一个保护语句中调用一个名为“nextPage”的函数,但它说“()”不能转换为“Bool”。要调用此函数,我需要做什么

  • 问题内容: 如何在Swift中传递C回调?考虑以下示例: 问题答案: 使用Swift 2.0,现在可以在纯Swift中设置回调了!请检查http://oleb.net/blog/2015/06/c-callbacks-in- swift/ 和Swift2无法调用类型类型为参数的’FSEventStreamCreate’

  • 问题内容: 我想用一种快速的语言创建一个抽象函数。可能吗? 问题答案: Swift中没有抽象的概念(例如Objective-C),但是您可以这样做:

  • 回调函数 返回上级 DDEnumCallback DDEnumCallbackEx EnumModesCallback EnumSurfacesCallback EnumVideoCallback DDEnumCallback 返回目录 DDEnumCallback是用于DirectDrawEnumerate函数的应用程序定义的回调函数。 BOOL WINAPI DDEnumCallback( G

  • 上一节中介绍了Fullpage的方法函数,那些函数只适合单独使用,如果想更加详细的控制Fullpage,就需要使用回调函数,接下来得文档将为您详细介绍Fullpage中的回调函数使用方法和参数。 afterLoad (anchorLink, index) 滚动到某一屏后的回调函数,接收 anchorLink 和 index 两个参数。 anchorLink 是锚链接的名称 index 是secti

  • 回调函数(当设置onInit, onSelectStart, onSelectChange或 onSelectEnd选项)接收两个参数,第一个选项是这个插件所应用图像的引用,另外一个则是呈现当前选择的对象,这个对象有六个性质。 性质 描述 x1 y1 选择区域左上角的坐标 x2 y2 选择区域右下角的坐标 width 选择区域的宽度 height 选择区域的高度 为了便于理解,下面给出当选择完后执