Il semble qu'une API de réflexion en Swift n'est pas une priorité élevée pour Apple pour le moment. Mais en plus de la réponse de @stevex ici, il y a une autre fonction dans la bibliothèque standard qui aide.
À partir de la version bêta 6, _stdlib_getTypeName
obtient le nom de type mangled d'une variable. Collez ceci dans un playground vide :
import Foundation
class PureSwiftClass {
}
var myvar0 = NSString() // Classe Objective-C
var myvar1 = PureSwiftClass()
var myvar2 = 42
var myvar3 = "Hans"
println( "TypeName0 = \(_stdlib_getTypeName(myvar0))")
println( "TypeName1 = \(_stdlib_getTypeName(myvar1))")
println( "TypeName2 = \(_stdlib_getTypeName(myvar2))")
println( "TypeName3 = \(_stdlib_getTypeName(myvar3))")
La sortie est :
TypeName0 = NSString
TypeName1 = _TtC13__lldb_expr_014PureSwiftClass
TypeName2 = _TtSi
TypeName3 = _TtSS
L'article de blog d'Ewan Swick aide à décoder ces chaînes :
par exemple _TtSi
signifie le type Int
interne de Swift.
Mike Ash a un excellent article de blog couvrant le même sujet.
1 votes
J'ai créé une classe d'aide pour la réflexion en Swift. Vous pouvez la trouver à : github.com/evermeer/EVReflection
2 votes
Ils ont supprimé reflect dans Swift 2.0. Voici comment je numérote les attributs et les valeurs Link