2014-06-22 86 views
3

我剛開始學習蘋果斯威夫特我不能處理問題,我有方法來幫助Objective-C的,請在蘋果斯威夫特改寫如何傳遞一個類和方法來創建一個類的實例?

- (void)setClass:(Class)aClass { 
    NSObject *object = [[aClass alloc] init]; 
} 

調用方法(從NSObject的繼承用戶):

[self setClass:[User class]]; 

如何在Apple Swift上重複這些操作? 謝謝!

+0

@MartinR - 不,請仔細閱讀我的問題 – Zarochintsev

+3

我做到了!根據這裏給出的答案,'[User class]'在Swift中是'User.self','[[aClass alloc] init]'就是'aClass()'。你嘗試過嗎? –

回答

8

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() 
} 
+0

請查看http://stackoverflow.com/help/how-to-answer:**爲鏈接提供上下文**鼓勵鏈接到外部資源,但請在鏈接上添加上下文,以便您的其他用戶擁有一些想法是什麼以及它爲什麼在那裏。如果目標網站無法訪問或永久離線,請始終引用重要鏈接中最相關的部分。 –

+0

@MartinR好的,完成了。 – bzz

+1

請注意,'AnyClass'是一種更通用的方式來編寫任何類型的對應於類我知道的類 – newacct

相關問題