我剛開始學習蘋果斯威夫特我不能處理問題,我有方法來幫助Objective-C的,請在蘋果斯威夫特改寫如何傳遞一個類和方法來創建一個類的實例?
- (void)setClass:(Class)aClass {
NSObject *object = [[aClass alloc] init];
}
調用方法(從NSObject的繼承用戶):
[self setClass:[User class]];
如何在Apple Swift上重複這些操作? 謝謝!
我剛開始學習蘋果斯威夫特我不能處理問題,我有方法來幫助Objective-C的,請在蘋果斯威夫特改寫如何傳遞一個類和方法來創建一個類的實例?
- (void)setClass:(Class)aClass {
NSObject *object = [[aClass alloc] init];
}
調用方法(從NSObject的繼承用戶):
[self setClass:[User class]];
如何在Apple Swift上重複這些操作? 謝謝!
Here is an article關於在Swift中通過名稱實例化類。通過使用方法
+ (id)create:(NSString *)className
{
return [NSClassFromString(className) new];
}
創建一個Objective-C類並通過從Swift中調用它來解決問題。 的源代碼是在GitHub:https://github.com/ijoshsmith/swift-factory
UPDATE:
Here是一個簡單的解決方案:
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()
}
@MartinR - 不,請仔細閱讀我的問題 – Zarochintsev
我做到了!根據這裏給出的答案,'[User class]'在Swift中是'User.self','[[aClass alloc] init]'就是'aClass()'。你嘗試過嗎? –