我正在尝试使用SWIFT 4.0代码协议序列化对象。试图解码闭合属性时,我会遇到错误:
guard let influenceFunction = try? container.decode(((E, Double) -> (E))!.self, forKey: TransformCodingKeys.influenceFunction) else {
// ... do something clever ...
print("sad times...")
}
Cannot invoke 'decode' with an argument list of type '(((E, Double) -> (E))!.Type, forKey: TransformCodingKeys)'
我想足够可理解的,但是当然必须有一些我可以使用的策略(毕竟,功能是一流的对象,对吗?)。我必须以某种方式包裹我的关闭吗?
您可以使用技巧来解决:
typealias YourCompletion = (_ status: Bool) -> Void
class Completion: Codable {
var completion: YourCompletion?
private enum CodingKeys: CodingKey {}
}