繁体   English   中英

如何在Swift 3.0中调用此Objective-C类方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM