2015-02-24 64 views
2

我已经在我现有的Objective-C项目中的Swift中编写了一个类。到目前为止,桥接工作得很好。然而,我确实有一种方法,我在运行时使用NSClassFromString()生成一个类。当字符串是我的Swift类名时,它返回nil。使用Swift文件的NSClassFromString

class MySwiftClass : NSObject {} 

,并在Objective-C:

Class myClass = NSClassFromString(@"MySwiftClass"); 

和myClass的将是零每次。我也试过:

Class myClass = NSClassFromString(@"MyAppName.MySwiftClass"); 

而且还是零。

+0

您是否尝试过以其他方式查看'NSStringFromClass'对MySwiftClass有什么要说的? – CodaFi 2015-03-01 23:42:07

+0

@CodaFi'NSStringFromClass'工作。 – ahoang 2015-03-05 02:48:51

回答

5

所有的swift类都使用Product Module Name和它们的命名空间的类名(Module.Class)。如果您想在您的Objective-C代码中为类使用“MySwiftClass”名称;您可以添加注释@objc(MySwiftClass)揭露相同迅速类名(不含模块):

@objc(MySwiftClass) 
class MySwiftClass{ 
    ... 
} 

然后

Class myClass = NSClassFromString(@"MySwiftClass"); 

将包含而不是无类。

+0

像魔术般的作品! :) – devios1 2016-01-31 20:55:21