归档时:结构给出“冗余协议错误”,但运行时不给出

时间:2019-05-03 19:04:02

标签: ios swift alamofire moya

我已将代码迁移到Swift 4.2。并且当在设备上编译运行时,一切工作正常(编译并运行)。但是,当我尝试为TestFlight存档时,它给我一个结构“只分配了一个协议”的错误“ FormFormcoding与协议'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'”

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

非常感谢您提出解决建议。

2 个答案:

答案 0 :(得分:1)

这似乎是由于Moya和Alamofire之间的冲突造成的。 Moya重新定义(类型别名)ParameterEncoding:

public typealias ParameterEncoding = Alamofire.ParameterEncoding

所以,如果我注释掉

import Foundation
//import Moya
import Alamofire

然后生效(存档)

答案 1 :(得分:0)

您还可以通过使用A = np.random.uniform(size=(1000,120)) B = np.random.uniform(size=(1000,120,3)) A*B # ValueError: operands could not be broadcast together with shapes (1000,120) (1000,120,3) np.shape(np.dot(A,B)) # (1000,1000,3) np.shape(A@B) # (1000,1000,3) np.tensordot(A,B,axes=1) # ValueError: shape-mismatch for sum A[..., None]*B # works, THANKS!

显式引用Alamofire的协议来解决此问题。