Ну, для одного, еквівалент Swift [NSString class]
є .self
(див. Документи Metatype , хоча вони досить тонкі).
Насправді NSString.class
це навіть не працює! Ви повинні використовувати NSString.self
.
let s = NSString.self
var str = s()
str = "asdf"
Так само і зі швидким класом я спробував ...
class MyClass {
}
let MyClassRef = MyClass.self
// ERROR :(
let my_obj = MyClassRef()
Хм ... помилка говорить:
Не вдалося виконати ігровий майданчик: помилка:: 16: 1: помилка: побудова об’єкта класу типу 'X' зі значенням метатипу вимагає ініціалізатора '@required'
Y().me()
^
<REPL>:3:7: note: selected implicit initializer with type '()'
class X {
^
Мені знадобилося деякий час, щоб зрозуміти, що це означає ... виявляється, він хоче, щоб клас мав @required init()
class X {
func me() {
println("asdf")
}
required init () {
}
}
let Y = X.self
// prints "asdf"
Y().me()
Деякі документи посилаються на це як на те .Type
, але вони MyClass.Type
видають помилку в ігровому майданчику.