Swift: 转义闭包如何在成功后将值传递给之前的 ViewController
Swift: Escaping closure How to pass values to previous ViewController after success
我正在对 运行 函数使用 @escaping 闭包
我只想将成功字典传递给我之前的 ViewController 以使用其数据。
这是我的代码
func addToCart(vc:UIViewController, param:[String:String], completionHandler:@escaping (_ success:Bool, _ errorC : Error?, _ stock_flag : Bool?) -> Void)
{
WebServiceHelper.sharedInstanceAPI.hitPostAPI(urlString: KeyConstant.APIAddCart, params: pramaTemp, completionHandler: { (result: [String:Any], err:Error?) in
print(result)
MBProgress().hideIndicator(view: vc.view)
if(!(err == nil))
{
completionHandler(false,err, false)
return
}
let json = JSON(result)
let statusCode = json["status"].string
print(json)
if(statusCode == "success")
{
print(result)
completionHandler(true,err,true)
}
else
{
if(json["stock_flag"].string == "0")
{
completionHandler(false,err,false)
}
else if(json["stock_flag"].int == 0)
{
completionHandler(false,err,false)
}
else
{
completionHandler(false,err,true)
}
}
})
}
我得到了成功的回应。请指导我如何将结果数据传递给我之前的 ViewController
.
我正在使用此代码导航到我正在使用上述代码的模型视图
CartViewModel().addToCart(vc: self, param:params ) { (isDone:Bool, error:Error?, stock_flag:Bool?) in
您可以像这样将字典添加到您的成功闭包中:
func addToCart(vc:UIViewController, param:[String:String], completionHandler:@escaping (_ success:Bool, _ errorC : Error?, _ stock_flag : Bool?, result: [String:Any]?) -> Void)
{ ... }
之后就可以在闭包中使用了。
CartViewModel().addToCart(vc: self, param:params ) { (isDone, error, stock_flag, result) in
// Use result here
}
我正在对 运行 函数使用 @escaping 闭包 我只想将成功字典传递给我之前的 ViewController 以使用其数据。 这是我的代码
func addToCart(vc:UIViewController, param:[String:String], completionHandler:@escaping (_ success:Bool, _ errorC : Error?, _ stock_flag : Bool?) -> Void)
{
WebServiceHelper.sharedInstanceAPI.hitPostAPI(urlString: KeyConstant.APIAddCart, params: pramaTemp, completionHandler: { (result: [String:Any], err:Error?) in
print(result)
MBProgress().hideIndicator(view: vc.view)
if(!(err == nil))
{
completionHandler(false,err, false)
return
}
let json = JSON(result)
let statusCode = json["status"].string
print(json)
if(statusCode == "success")
{
print(result)
completionHandler(true,err,true)
}
else
{
if(json["stock_flag"].string == "0")
{
completionHandler(false,err,false)
}
else if(json["stock_flag"].int == 0)
{
completionHandler(false,err,false)
}
else
{
completionHandler(false,err,true)
}
}
})
}
我得到了成功的回应。请指导我如何将结果数据传递给我之前的 ViewController
.
我正在使用此代码导航到我正在使用上述代码的模型视图
CartViewModel().addToCart(vc: self, param:params ) { (isDone:Bool, error:Error?, stock_flag:Bool?) in
您可以像这样将字典添加到您的成功闭包中:
func addToCart(vc:UIViewController, param:[String:String], completionHandler:@escaping (_ success:Bool, _ errorC : Error?, _ stock_flag : Bool?, result: [String:Any]?) -> Void)
{ ... }
之后就可以在闭包中使用了。
CartViewModel().addToCart(vc: self, param:params ) { (isDone, error, stock_flag, result) in
// Use result here
}