具有闭包属性的Swift 4.0解码器错误

时间:2017-08-30 22:56:57

标签: swift serialization closures swift4 codable

我正在尝试使用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)'

我认为可以理解,但肯定必须有一些我可以使用的策略(毕竟,函数是一流的对象,对吧?)。我必须以某种方式包裹我的闭包吗?

1 个答案:

答案 0 :(得分:0)

您可以使用技巧解决此问题:

typealias YourCompletion = (_ status: Bool) -> Void
class Completion: Codable {
    var completion: YourCompletion?
    private enum CodingKeys: CodingKey {}
}