2016-09-12 3 views
11

Ich mag so etwas wie dies zu tun:Wie übergibt man einen Swift-Typ als Methodenargument?

func doSomething(a: AnyObject, myType: ????) 
{ 
    if let a = a as? myType 
    { 
     //… 
    } 
} 

In Objective-C der Klasse der Klasse war Class

+0

Sie werden mit einem Verfahren Eingabe vom Typ 'T.Type' Generika verwenden möchten, können Sie werfen dann auf' T' - siehe zum Beispiel [dieser Q & A] (http: //stackoverflow.com/questions/37216240/generic-fu nction-take-ein-type-name-in-swift) – Hamish

Antwort

30

Sie haben eine generische Funktion verwenden, wenn der Parameter nur für Typinformationen verwendet wird, so Sie es T Stimmen:

func doSomething<T>(a: AnyObject, myType: T.Type) { 
    if let a = a as? T { 
     //… 
    } 
} 

// usage 
doSomething("Hello World", myType: String.self) 
Verwandte Themen