如何将块写入 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")
我在这里搜索了很多问题,但似乎没有人适合下面的问题。
我正在尝试在 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")