Swift 如何传递类和方法来创建类的实例?
我刚开始学习Apple Swift我无法处理这个问题,我有方法帮助Objective-C请在Apple Swift上重写Swift 如何传递类和方法来创建类的实例?,swift,Swift,我刚开始学习Apple Swift我无法处理这个问题,我有方法帮助Objective-C请在Apple Swift上重写 - (void)setClass:(Class)aClass { NSObject *object = [[aClass alloc] init]; } 调用方法(从NSObject继承的用户): 如何在Apple Swift上重复这些操作? 谢谢大家! 关于在Swift中按名称实例化类。通过使用方法创建Objective-C类来解决该问题 + (id)create
- (void)setClass:(Class)aClass {
NSObject *object = [[aClass alloc] init];
}
调用方法(从NSObject继承的用户):
如何在Apple Swift上重复这些操作?
谢谢大家! 关于在Swift中按名称实例化类。通过使用方法创建Objective-C类来解决该问题
+ (id)create:(NSString *)className
{
return [NSClassFromString(className) new];
}
从斯威夫特那里叫它。
源代码位于GitHub上:
更新:
是一个更简单的解决方案:
var clazz: NSObject.Type = TestObject.self
var instance : NSObject = clazz()
if let testObject = instance as? TestObject {
println("yes!")
}
当然,该类必须是NSObject的子类
然后,您的功能将是:
func setClass (myClass: NSObject.Type){
var object = myClass()
}
@马丁纳:不,请仔细阅读我的问题!根据这里给出的答案,
[User class]
在Swift中是User.self
,而[[aClass alloc]init]
只是aClass()
。你试过了吗?请看一下:为链接提供上下文鼓励链接到外部资源,但请在链接周围添加上下文,这样你的其他用户就会知道它是什么以及它为什么存在。始终引用重要链接的最相关部分,以防目标站点无法访问或永久脱机。请注意,AnyClass
是一种更通用的方法,用于编写与class@newacct我知道。该解决方案仅适用于NSObject子类。使用AnyClass
将导致错误:“AnyObject”不能用“()”
func setClass (myClass: NSObject.Type){
var object = myClass()
}