首页 > 解决方案 > 归档时:结构给出“冗余协议错误”,但在运行时没有

问题描述

我已将代码迁移到 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’”

我可以想象存档/发布的构建设置是不同的,并且包括一些额外的优化/检查。但我在这里没有看到实际错误。

将不胜感激任何建议如何解决它。

标签: iosswiftalamofiremoya

解决方案


看起来这是由于 Moya 和 Alamofire 之间的冲突。Moya 重新定义(类型别名)ParameterEncoding:

public typealias ParameterEncoding = Alamofire.ParameterEncoding

所以如果我注释掉

import Foundation
//import Moya
import Alamofire

然后它工作(档案)


推荐阅读