我尝试编写如下方法:
class ThisIsExample{
func theMethod(inside:((Error?)->Void)->Void){
//some implementation
}
}
但是,当我尝试调用此方法时,我不知道该怎么做。
我在下面写了代码:
let example = ThisIsExample()
example.theMethod { ({(err) in }) in
print("print something")
}
我尝试在闭包
中编写另一个闭包,即{(错误)}}但它不可行,我会收到错误消息,如
上下文闭包类型'((错误?) - > Void) - > Void'期望1 参数,但在封闭体中使用了0
所以...有人可以教我如何以正确的方式调用这种方法,非常感谢你。
答案 0 :(得分:2)
虽然不确定嵌套闭包的目的是什么。但是如果你想使用这种方法,那么你应该以这种方式调用闭包,
example.theMethod { (closure) in
closure(NSError.init())
}
答案 1 :(得分:0)
你可以这样做:
func theMethod(inside:(Error?) -> ()) {
print("Closure as paramater")
}
这会将Error作为闭包参数并返回void。
您可以按以下方式调用此功能:
theMethod { (error) in
}
答案 2 :(得分:0)
像这样的东西
class NewClass
{
class func myCustomFunc(_ parameter1: String, parameterDict : [String : AnyObject]?, success:@escaping (String) -> Void, failure:@escaping (String) -> Void)
{
/// Just example Bool
var result : Bool = false
/// Get the parameter you sent while calling this Clousure block
let myParamString = parameter1
let paramDict = parameterDict
/// Share the output in case of Success and Failure
if (result){
success("success")
}
else{
failure("Failure")
}
}
}
<强>用法强>
NewClass.myCustomFunc("demoStr", parameterDict: [:], success: { (succesString) in
if succesString == "success"{
}
}) { (failureStr) in
if failureStr == "failure"{
}
}
此函数接受参数,并根据闭包给出不同的块