归档时:结构给出“冗余协议错误”,但在运行时没有
Posted
技术标签:
【中文标题】归档时:结构给出“冗余协议错误”,但在运行时没有【英文标题】:When archiving: A struct gives "Redundant protocol error", but not when running 【发布时间】:2019-05-03 19:04:02 【问题描述】:我已将代码迁移到 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’”
我可以想象存档/发布的构建设置是不同的,并且包括一些额外的优化/检查。但我在这里没有看到实际错误。
如果有任何解决方法的建议,将不胜感激。
【问题讨论】:
【参考方案1】:看起来这是因为 Moya 和 Alamofire 之间的冲突。 Moya 重新定义(typealias)ParameterEncoding:
public typealias ParameterEncoding = Alamofire.ParameterEncoding
所以如果我注释掉
import Foundation
//import Moya
import Alamofire
然后它工作(档案)
【讨论】:
【参考方案2】:您也可以通过使用以下方式明确引用 Alamofire 的协议来解决此问题:public struct FormEncoding: Alamofire.ParameterEncoding ...
【讨论】:
以上是关于归档时:结构给出“冗余协议错误”,但在运行时没有的主要内容,如果未能解决你的问题,请参考以下文章
Tensorflow 示例在 colab 上运行良好,但在 jupyter lab 上运行时给出了 nan
IIS7 中的 ***Exception 但在 Cassini 中没有