ios - 归档时:结构给出“冗余协议错误”,但在运行时没有
问题描述
我已将代码迁移到 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’”
我可以想象存档/发布的构建设置是不同的,并且包括一些额外的优化/检查。但我在这里没有看到实际错误。
将不胜感激任何建议如何解决它。
解决方案
看起来这是由于 Moya 和 Alamofire 之间的冲突。Moya 重新定义(类型别名)ParameterEncoding:
public typealias ParameterEncoding = Alamofire.ParameterEncoding
所以如果我注释掉
import Foundation
//import Moya
import Alamofire
然后它工作(档案)
推荐阅读
- python-3.x - 如何在 sqlalchemy 中删除外键记录
- twitter-bootstrap - Bootstrap 3 到 Bootstrap 4 的转换
- gcc - 如何使用 Yocto Linux 的库依赖项交叉编译应用程序?
- gcc - 禁用所有 AVX512 扩展
- cypress - 期望 div 值等于循环
- java - 如何使用 JPA 实体构建和填充数据库?
- r - 如何使用 dplyr 管道执行逐步回归分析?
- excel - 使用 Microsoft.Office.Interop.Excel 另存为错误导出到 .pdf。但不保存excel文件
- python - 如何更改 ubuntu 中 pip 的默认软件包安装位置?
- excel - 从重复的代码行创建循环函数