在Swift中动态创建对象

ber*_*ium 3 macos introspection objective-c ios swift

在Objective-C中我有一个类别:

@implementation NSObject (Entity)
+ (instancetype)entity{
    Class cl = self.class;
    NSObject *obj = [[cl alloc] init];

    return obj;
}
@end
Run Code Online (Sandbox Code Playgroud)

我们假设有A和B类:

@interface A : NSObject
@end

@interface B : NSObject
@end
Run Code Online (Sandbox Code Playgroud)

然后我可以使用静态entity方法来创建像这样的对象:

NSObject *o = [NSObject entity]; // type of NSObject
A *a = [A entity];               // type of A
B *b = [B entity];               // type of B
Run Code Online (Sandbox Code Playgroud)

如何在Swift中编写该类别?我知道可以通过知道类型来创建一个对象let s = NSString.self; var str = s.init(),但是在这里我不知道这个类,它应该是self.self没有意义的东西,并且不能确定.

提前致谢

Las*_*ove 5

let s = NSString.self;
var str = s.init();
Run Code Online (Sandbox Code Playgroud)

如果你需要这门课,那就是:

print(s) // "NSString"
Run Code Online (Sandbox Code Playgroud)

s的类型为"NSString.Type",它代表Object类;

如果你需要一个对象的类,我认为你正在搜索"dynamicType":

let object = "toto"
let t = object.dynamicType // String.Type

var newObject = t.init("toto");
Run Code Online (Sandbox Code Playgroud)