簡體   English   中英

未能產生表達診斷,Xcode 11.4,Moya

[英]failed to produce diagnostic for expression, Xcode 11.4, Moya

更新到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

我發現了這個問題,Xcode 11.4 編譯問題在涉及optionalsgenerics時不夠詳細。

Moya版本和Swift版本沒有變化。

generics 的問題:

let requestClosure: MoyaProvider<EndPoint>.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

對我來說,我收到了這個錯誤,因為我的一個屬性是Error類型的,我正在為它分配一個LocalizedError類型的值。 將屬性類型更改為LocalizedError解決了該問題。

至少在某些情況下,這似乎是一個 Xcode 錯誤。 我重命名了一個協議,然后將其重命名回來,問題就消失了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM