Probieren Sie reflect().summary
auf Class self oder Instanz dynamicType aus. Entpacken Sie die Optionals, bevor Sie dynamicType erhalten, da andernfalls der dynamicType der Optional-Wrapper ist.
class SampleClass { class InnerClass{} }
let sampleClassName = reflect(SampleClass.self).summary;
let instance = SampleClass();
let instanceClassName = reflect(instance.dynamicType).summary;
let innerInstance = SampleClass.InnerClass();
let InnerInstanceClassName = reflect(innerInstance.dynamicType).summary.pathExtension;
let tupleArray = [(Int,[String:Int])]();
let tupleArrayTypeName = reflect(tupleArray.dynamicType).summary;
Die Zusammenfassung ist ein Klassenpfad mit beschriebenen generischen Typen. Um einen einfachen Klassennamen aus der Zusammenfassung zu erhalten, probieren Sie diese Methode.
func simpleClassName( complexClassName:String ) -> String {
var result = complexClassName;
var range = result.rangeOfString( "<" );
if ( nil != range ) { result = result.substringToIndex( range!.startIndex ); }
range = result.rangeOfString( "." );
if ( nil != range ) { result = result.pathExtension; }
return result;
}