[英]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 編譯問題在涉及optionals
和generics
時不夠詳細。
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.