我正在尝试使用Swift 4.0 Codable协议序列化我的对象。我在尝试解码闭包属性时遇到错误:
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)'
我认为可以理解,但肯定必须有一些我可以使用的策略(毕竟,函数是一流的对象,对吧?)。我必须以某种方式包裹我的闭包吗?
答案 0 :(得分:0)
您可以使用技巧解决此问题:
typealias YourCompletion = (_ status: Bool) -> Void
class Completion: Codable {
var completion: YourCompletion?
private enum CodingKeys: CodingKey {}
}