[英]How to invoke this Objective-C Class Method in Swift 3.0?
我想在Swift 3.0中使用一个块来调用OC类方法:
@interface API : NSObject
+ (void)GetCommissionInfoWithModel:(CommissionInfoRequestModel*)model returnInfo:(void (^)(CommissionInfoResponseModel*resModel))callBackBlock;
我试图像这样调用它:
API.GetCommissionInfoWithModel(CommissionInfoRequestModel...
但我不知道如何继续。 我知道如何调用一个简单的方法,例如:
API.test()
API.test(para1:"1",para2:"2")
我努力了:
让someModel:CommissionInfoRequestModel = CommissionInfoRequestModel.model()
但是我又遇到一个错误:
模型()不可用:使用对象构造'BaseModel()
是的, CommissionInfoRequestModel
是从“ BaseModel”继承的,但是为什么我不能使用CommissionInfoRequestModel()?
比我在下面得到一个错误:
Cannot convert value of type '(CommissionInfoResponseModel) -> ()' to expected argument type '((CommissionInfoResponseModel?) -> Void)!'
当我使用如下代码时:
API.GetCommissionInfoWithModel(someModel1){
(resModel: CommissionInfoResponseModel) in
// Response available in 'resModel' parameter...
}
尝试这个:
let someModel: CommissionInfoRequestModel = ...
API.GetCommissionInfoWithModel(someModel) {
resModel in
// Response available in 'resModel' parameter...
}
这只是这种较长形式的语法糖 :
API.GetCommissionInfoWithModel(someModel, returnInfo: {
(resModel: CommissionInfoResponseModel?) in
...
})
在两个版本中,最后一个参数是闭包 :
闭包是可以独立传递的功能块,可以在代码中传递和使用。 Swift中的闭包类似于C和Objective-C中的块以及其他编程语言中的lambda。
有关更多信息,请参见The Swift Programming Language一书 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.