Convert Swift Classe codificável digitada como Qualquer no dicionário

Em conexão comminh anterio questõe, Decidi subclasseNSArrayController para alcançar o comportamento desejad

class NSPresetArrayController: NSArrayController {
    override func addObject(_ object: Any) {
        if let preset = object as? Preset {
            super.addObject(["name": preset.name, "value": preset.value])
        } else {
            super.addObject(object)
        }
    }
}

Isso funciona, mas e se eu quisesse algo que funcionasse para qualquerEncodable classe, e não apenas uma com duas propriedades chamadasname evalue?

Basicamente, o problema é criar um dicionário a partir de uma classe, onde as chaves são os nomes das propriedades e os valores são os valores dessas propriedade

Eu tentei escrever algo assim:

class NSPresetArrayController: NSArrayController {
    override func addObject(_ object: Any) {
        if let encodableObject = object as? Encodable {
            let data = try! PropertyListEncoder().encode(encodableObject)
            let any = try! PropertyListSerialization.propertyList(from: data, options: [], format: nil)

            super.addObject(any)
        }
    }
}

o entanto, recebo um erro de compilação:

Cannot invoke 'encode' with an argument list of type '(Encodable)'
1. Expected an argument list of type '(Value)'

Como faço para corrigir isso para compilar?

questionAnswers(2)

yourAnswerToTheQuestion