我在现有的 Objective-C 项目中用 Swift 编写了一个类。到目前为止,桥接工作非常顺利。然而,我确实有一个方法,我在运行时使用 NSClassFromString() 生成一个类。当字符串是我的 Swift 类名时,它返回 nil。
class MySwiftClass : NSObject {}
在 Objective-C 中:
Class myClass = NSClassFromString(@"MySwiftClass");
myClass 每次都是 nil。我也试过:
Class myClass = NSClassFromString(@"MyAppName.MySwiftClass");
仍然是零。
最佳答案
所有 swift 类都使用产品模块名称的一个点和它们的命名空间 (Module.Class) 的类名。如果您想在 Objective-C 代码中为类使用“MySwiftClass”名称;您可以添加 @objc(MySwiftClass)
注释来公开相同的 swift 类名(没有模块):
@objc(MySwiftClass)
class MySwiftClass{
...
}
然后
Class myClass = NSClassFromString(@"MySwiftClass");
将包含类而不是 nil。
关于swift - NSClassFromString 使用 Swift 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28706602/