не удалось произвести диагностику c для выражения, Xcode 11.4, моя - PullRequest
0 голосов
/ 12 апреля 2020

После обновления до Xcode 11.4 я начал получать эту ошибку

failed to produce diagnostic for expression please file a bug report

Вкл .:

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

Я обновил Мойю, но она не выглядит нравится вопрос. Отлично работает на предыдущих версиях 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

1 Ответ

1 голос
/ 12 апреля 2020

Я обнаружил проблему, проблемы компиляции Xcode 11.4 не достаточно многословны, когда речь идет о optionals и generics.

Моя версия и Swift версия не были изменены.

Проблема с обобщениями:

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
...