【问题标题】:failed to produce diagnostic for expression, Xcode 11.4, Moya未能生成表达式诊断,Xcode 11.4,Moya
【发布时间】:2020-04-12 14:42:06
【问题描述】:

更新到 Xcode 11.4 后,我开始收到此错误

无法生成表达式诊断,请提交错误报告

开启:

let provider = MoyaProvider<EndPoint>(requestClosure: requestClosure)

我更新了 Moya,但看起来不是问题。在以前的 Xcode 版本上运行良好。

完整代码:

 let requestClosure: MoyaProvider.RequestClosure = {
            [unowned self] (endpoint: Endpoint, done: @escaping MoyaProvider.RequestResultClosure) in

       guard let request = try? endpoint.urlRequest() else { return }

       self.authenticator.authenticate(request, done: { (request) in
                done(.success(request))
       })
 }
 provider = MoyaProvider<EndPoint>(requestClosure: requestClosure

【问题讨论】:

    标签: ios swift generics optional xcode11.4


    【解决方案1】:

    我发现了这个问题,Xcode 11.4 编译问题对于optionals 和generics 不够详细。

    Moya 版本和Swift 版本没有改变。

    泛型问题:

    let requestClosure: MoyaProvider&lt;EndPoint&gt;.RequestClosure 必须在闭包中显式定义类型,这是有道理的,但不是 Xcode 11.4 版之前的要求

    let requestClosure: MoyaProvider<EndPoint>.RequestClosure = {
                [unowned self] (endpoint: Endpoint, done: @escaping MoyaProvider.RequestResultClosure) in
    
           guard let request = try? endpoint.urlRequest() else { return }
    
           self.authenticator.authenticate(request, done: { (request) in
              done(.success(request))
          })
    }
    provider = MoyaProvider<EndPoint>(requestClosure: requestClosure
    

    【讨论】:

      【解决方案2】:

      对我来说,我遇到了这个错误,因为我的一个属性是 Error 类型的,我正在为它分配一个 LocalizedError 类型的值。将属性类型更改为 LocalizedError 解决了问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-10
        • 1970-01-01
        • 2021-08-30
        相关资源
        最近更新 更多