Update: Eine Problemumgehung, die mit Swift 2 und höher funktioniert, finden Sie in der Antwort von Daniel Shin
Ein optionaler String ist an und für sich kein Typ, daher können Sie keine Erweiterung für einen optionalen Typ erstellen. In Swift Optionalist an nur eine Aufzählung (plus ein bisschen syntaktischer Zucker), die entweder sein Nonekann oder Someeinen Wert umschließt. Um Ihre String-Methode zu verwenden, müssen Sie Ihre auspacken optionalString. Sie können einfach eine optionale Verkettung verwenden, um dies zu erreichen:
optionalString?.someFunc()
Wenn optionalStringnicht nil, someFuncwird darauf aufgerufen. Eine alternative (weniger prägnante) Möglichkeit besteht darin, mithilfe der optionalen Bindung festzustellen, ob optionalStringein Wert vorhanden ist oder nicht , bevor Sie versuchen, die Methode aufzurufen:
if let string = optionalString {
string.someFunc()
}
In Ihrem Beispiel aus den Kommentaren unten müssen Sie nicht mehrere ifAnweisungen verschachteln . Sie können überprüfen, ob die optionale Zeichenfolge eine leere Zeichenfolge in einer einzelnen ist if:
if optionalString?.isEmpty == true {
doSomething()
}
Dies funktioniert , weil der Ausdruck optionalString?.isEmptyeines optionalen Bool (dh zurückgibt true, falseoder nil). So doSomething()wird nur aufgerufen werden , wenn optionalStringist nicht nil , und wenn die Zeichenfolge leer ist .
Eine andere Alternative wäre:
if let string = optionalString where string.isEmpty {
doSomethingWithEmptyString(string)
}