如何传递类和方法来创建类的实例?

Zar*_*sev 3 swift

我刚开始学习Apple Swift我无法解决这个问题,我有方法帮助Objective-C请重写Apple Swift

- (void)setClass:(Class)aClass {
    NSObject *object = [[aClass alloc] init];
}
Run Code Online (Sandbox Code Playgroud)

调用方法(用户从NSObject继承):

[self setClass:[User class]];
Run Code Online (Sandbox Code Playgroud)

如何在Apple Swift上重复此类操作?谢谢!

bzz*_*bzz 8

这是一篇关于在Swift中按名称实例化类的文章.通过使用方法创建Objective-C类可以解决该问题

+ (id)create:(NSString *)className
{
    return [NSClassFromString(className) new];
}
Run Code Online (Sandbox Code Playgroud)

并从Swift调用它.源代码在GitHub上:https://github.com/ijoshsmith/swift-factory

更新:

是一个更简单的解决方案:

var clazz: NSObject.Type = TestObject.self
var instance : NSObject = clazz()

if let testObject = instance as? TestObject {
    println("yes!")
}
Run Code Online (Sandbox Code Playgroud)

当然,该类必须是NSObject的子类.

那么你的功能是:

func setClass (myClass: NSObject.Type){
    var object = myClass()
}
Run Code Online (Sandbox Code Playgroud)