2 votes

Swift 4.0 Erreur du décodeur avec la propriété de fermeture

J'essaie de sérialiser mes objets avec le protocole Codable de Swift 4.0. Je rencontre une erreur lorsque j'essaie de décoder les propriétés de fermeture :

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)'

C'est assez compréhensible, je suppose, mais il doit bien y avoir une stratégie que je peux utiliser (après tout, les fonctions sont des objets de première classe, n'est-ce pas ?) Dois-je envelopper mes fermetures d'une manière ou d'une autre ?

0voto

Rohit Sisodia Points 393

Vous pouvez utiliser une astuce pour résoudre ce problème :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X