如何将块写入 return 值从一个 class 到另一个?

How to write a block to return value from one class to another?

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


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

这是 class X 中的可选变量闭包。

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

这是classX中的函数。

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

来自classX,我想这样调用函数

printerCompletion("New Log")

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

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

That should print New Log in a View Controller file.

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

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

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

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


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

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

你需要在调用 block 之前定义 block 否则它将是 nil

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

   printerCompletion(currentLog: "New Log")