Ermitteln, ob Any.Type optional ist

8

Ich versuche festzustellen, ob ein gegebener Typ t ( Any.Type ) ein optionaler Typ ist, ich verwende diesen Test

%Vor%

aber es gibt immer false zurück.

Gibt es einen Weg, dies zu erreichen?

    
idmean 12.09.2015, 07:39
quelle

3 Antworten

7

Angenommen, Sie versuchen etwas Ähnliches:

%Vor%

Leider unterstützt Swift derzeit (wie in Swift 2) Kovarianz oder Kontravarianz nicht und prüft direkt gegen Optional.Type kann nicht gemacht werden:

%Vor%

Alternativ kann Optional ein bestimmtes Protokoll erweitern und nach diesem Typ suchen:

%Vor%     
LopSae 25.09.2015, 06:56
quelle
1

Ein bisschen spät für die Party. Aber ich stieß auf das gleiche Problem. Hier ist mein Code.

%Vor%

Es sieht gut aus für mich. swift4

    
Kaz Yoshikawa 08.02.2018 17:00
quelle
-2

Sie könnten Generika verwenden, um dies zu erreichen:

%Vor%

Bearbeiten

Der obige Code kann verwendet werden, um zu wissen, ob eine Variable vom optionalen Typ ist. Die einzige Möglichkeit, über eine Variable, die einen Typ enthält, herauszufinden, ist die Verwendung von reflection:

%Vor%

Der erste Aufruf von Mirror gibt die Zeichenfolge "Mirror for Optional<String>.Type" an und die zweite gibt "Mirror for String.Type" an.

Ich verstehe, dass das Vergleichen der Zeichenfolge keine bequeme Möglichkeit ist, diese Überprüfung durchzuführen, ich werde versuchen, wieder etwas leistungsfähigeres zu finden ..

    
hariseldon78 15.09.2015 16:13
quelle

Tags und Links