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 Optional
ist an nur eine Aufzählung (plus ein bisschen syntaktischer Zucker), die entweder sein None
kann oder Some
einen 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 optionalString
nicht nil
, someFunc
wird darauf aufgerufen. Eine alternative (weniger prägnante) Möglichkeit besteht darin, mithilfe der optionalen Bindung festzustellen, ob optionalString
ein 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 if
Anweisungen 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?.isEmpty
eines optionalen Bool (dh zurückgibt true
, false
oder nil
). So doSomething()
wird nur aufgerufen werden , wenn optionalString
ist nicht nil
, und wenn die Zeichenfolge leer ist .
Eine andere Alternative wäre:
if let string = optionalString where string.isEmpty {
doSomethingWithEmptyString(string)
}