При архивации: структура выдает «Избыточная ошибка протокола», но не при запуске - PullRequest
0 голосов
/ 03 мая 2019

Я перенес код в Swift 4.2.А при компиляции для запуска на устройстве все работает нормально (компилируется и запускается).Но когда я пытаюсь выполнить архивирование для TestFlight, он выдает ошибку «Избыточное соответствие« FormEncoding »протоколу« ParameterEncoding »» для структуры, где только один протокол назначен

import Foundation
import Moya
import Alamofire

public struct FormEncoding: ParameterEncoding { // Error is here!

    public static var `default`: ParameterEncoding {
        return FormEncoding()
    }

    public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
        ...
    }

На панели ошибокв нем упоминается только одно соответствие протоколу:

«FormEncoding» здесь заявляет о соответствии протоколу «ParameterEncoding»

Я могу себе представить, что параметры сборки для Archiving / Release отличаются и включают некоторыедополнительные оптимизации / проверки.Но я не вижу здесь реальной ошибки.

Буду признателен за любые предложения, как ее исправить.

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Похоже, это из-за конфликта между Мойей и Аламофиром.Моя переопределяет (typealias) ParameterEncoding:

public typealias ParameterEncoding = Alamofire.ParameterEncoding

Так что, если я закомментирую

import Foundation
//import Moya
import Alamofire

, тогда это будет работать (архив)

0 голосов
/ 23 мая 2019

Вы также можете решить проблему, явно указав протокол Alamofire, используя: public struct FormEncoding: Alamofire.ParameterEncoding { ...

...