0

我在这里搜索了很多问题,但似乎没有人适合以下问题。


我正在尝试在 Swift 中创建一个块完成。

这是 X 类中的一个可选变量闭包。

var onLogCompletion:((_ logThing:String) -> ())?

这是 X 类中的函数。

func printerCompletion(currentLog:String) -> Void {
    //This is giving me an error:
    //Cannot call value of non-function type '((String) -> ())?'
    !(onLogCompletion(currentLog))
}

从 X 类中,我想像这样调用函数。

printerCompletion("New Log")

在视图控制器中,我想做这样的事情。

let objX = X()
objX.onLogCompletionm { (log) in 
    print(log)
}

这应该打印New Log在 View Controller 文件中。

我有在 Obj-C 中执行此操作的经验,但在 Swift 中没有。

请帮助解决这个问题,如果有更好的方法来解决这个问题。

4

1 回答 1

1

试试这个可能对你有帮助:

    var onLogCompletion:((_ logThing:String) -> ())? = nil


     func printerCompletion(currentLog:String) -> Void {
            self.onLogCompletion!(currentLog)
        }

     self.onLogCompletion  =  { (log) in
            print(log)
        }

您需要在调用块之前定义块,否则它将为零

    objX.onLogCompletionm  = { (log) in
                            print(log)
                    }

   printerCompletion(currentLog: "New Log")

在此处输入图像描述

于 2017-05-15T05:32:10.110 回答