【问题标题】:typealiasing closure in SwiftSwift 中的类型别名闭包
【发布时间】:2018-05-17 03:39:54
【问题描述】:

我使用的是用 Objective-C 开发的 SDK。我的应用程序是混合的(同时支持 Objc 和 Swift),我需要使用 SDK 的完成块。在 SDK 方面,它被定义为,

typedef void (^SomethingCompletionBlock)(NSArray<id<Something> > *_Nullable result, NSError *_Nullable error); 

在App端我需要使用like,

SDKService.fetchSomething(withModel: model) { (result, error) in

    if error != nil {

       completionBlock(result, error?)

    }
}

我想知道在我的 Swift 部分中,completionBlock 的签名是什么?我正在尝试类似下面的方法,但出现错误。

typealias SomethingSearchCompletionBlock = (result: Array<Something>?, error: Error?)

错误:

不能调用非函数类型的值 'SomethingSearchCompletionBlock'(又名'(结果: 可选>,错误:可选)')

【问题讨论】:

    标签: objective-c swift closures type-alias


    【解决方案1】:

    您必须添加Void返回值并且不需要参数标签

    typealias SomethingSearchCompletionBlock = (Array<Something>?, Error?) -> Void
    

    【讨论】:

      【解决方案2】:

      这可能会有所帮助

      typealias SomethingCompletionBlock = (_ result: [Something]?, _ erro: Error?) -> Void
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-20
        相关资源
        最近更新 更多