2016-05-18 5 views
0

Problem ist MyBool nicht konform Protokoll BooleanLiteralConvertible. Kann mir bitte jemand in die richtige Richtung zeigen.Ich möchte eine benutzerdefinierte bool machen, die alle Eigenschaften wie bool haben, aber der Standardwert sollte "true" anstelle von "false"

+0

Kartik, könnten Sie bitte erklären, warum Sie versuchen, dies zu tun? Das scheint sehr kontraproduktiv zu sein ... Außerdem glaube ich nicht, dass Bool speziell in Swift irgendwelche Standardwerte hat. –

+1

In Swift hat der 'Bool' Typ sowieso keinen Standardwert. – vadian

+0

convertFromBooleanLiteral wurde in sehr frühen Swift-Versionen verwendet. Suchen Sie die aktuelle Definition von BooleanLiteralConvertible. –

Antwort

0

Die Übereinstimmung mit BooleanLiteralConvertible erfordert die Hinzufügung eines Initialisierers, der BooleanLiteralType aka Bool akzeptiert. Eine leicht modifizierte Version von Ihrem Beispiel, die BooleanLiteralConvertible und BooleanType entspricht:

enum MyBool: BooleanLiteralConvertible, BooleanType { 
    case myTrue 
    case myFalse 

    var boolValue: Bool { 
     return self == .myTrue 
    } 

    init() { 
     self = .myTrue 
    } 

    init(booleanLiteral value: Bool) { 
     self = value ? .myTrue : .myFalse 
    } 
} 
Verwandte Themen