swift - NSClassFromString 使用 Swift 文件

标签 swift objective-c-runtime objective-c-swift-bridge

我在现有的 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/

相关文章:

swift - 闭包主体这么长,如何让它变短

objective-c - 无法从 objective-c、Xcode 8 访问 Swift 变量

json - 将 JSON 中的对象数组解析为 Swift 中的对象

arrays - 在 map View 上显示多个注释

ios - 在 Xcode 7 中更改了 +load 方法顺序

objective-c - 从单元测试访问模拟类变量的静态变量

objective-c - 类名上的 @objc 注释与类本身

objective-c - Swift 中的 NS_ENUM

json - 如何快速从 Any 类型访问我的 json 数据?

objective-c - 是否可以将类别添加到 Objective-C 元类?