Ich versuche, BooleanLiteralConvertible
Unterstützung meiner Klasse hinzuzufügen, so dass ich es mit einem boolean instanziieren kann. Die Sache, die mich für eine Schleife wirft, ist die Unterscheidung zwischen einem booleschen Wert und einem booleschen Literal.Warum benötigt Swift BooleanLiteralConvertible ein boolesches Literal?
Zum Beispiel, nach dem Protokoll hinzugefügt ich versuchte, dies:
func setSelected(value: Bool) {
var node: MyClass = value
}
Aber Swift darüber beschwert, dass es nicht Bool
-MyClass
umwandeln kann. Es dauerte eine Weile, bis ich erkannte, dass es sich um einen booleschen Literal handeln musste. Seltsamerweise funktioniert das Folgende gut:
func setSelected(value: Bool) {
var node: MyClass = value ? true : false
}
... was für mich absolut albern scheint. Gibt es einen berechtigten Grund für diese scheinbar sehr bizarre Anforderung?
Haben Sie 'value!' Versucht? – mattsven
"Wert" ist bereits ein nicht-optionaler 'Bool', ich kann kein'! 'Darauf anwenden. – devios1