Eh bien, pour l'un, la Swift équivalent de [NSString class]
est .self
(voir Metatype docs, mais elles sont assez fines).
En fait, NSString.class
ne fonctionne même pas! Vous devez utiliser NSString.self
.
let s = NSString.self
var str = s()
str = "asdf"
De même, avec une swift de la classe, j'ai essayé...
class MyClass {
}
let MyClassRef = MyClass.self
// ERROR :(
let my_obj = MyClassRef()
Hmm... le message d'erreur indique:
Aire de jeux de l'exécution a échoué: erreur: :16:1: erreur: construction d'un objet de type classe " X " avec un metatype valeur implique un '@required' initialiseur
Y().me()
^
<REPL>:3:7: note: selected implicit initializer with type '()'
class X {
^
Il m'a fallu un certain temps à comprendre ce que cela signifie... il s'avère qu'elle veut la classe d'avoir un @required init()
class X {
func me() {
println("asdf")
}
@required init () {
}
}
let Y = X.self
// prints "asdf"
Y().me()
Certains des docs se référer à ce que .Type
, mais MyClass.Type
me donne une erreur dans la cour de récréation.