1

假设我有一个名为 Connector.m 的连接器(用 Objective-C 编写)。我想创建一个使用 Swift 编写的新连接器,命名为 Connector.swift。我想从 Swift 访问所有的变量和方法。我已经创建了一个桥接头并写入了连接器头文件的导入。但我无法访问 Objective-C 类上的任何全局变量。

连接器.m

NSString * const kHTTP_METHOD_GET = @"GET";

连接器.swift

public class Connector: NSObject {

    var parentConnector : Connector

    override init() {
        self.parentConnector = Connector
    }

    func test() {
        print(parentConnector.kHTTP_METHOD_GET) //--> ERROR : Value of type 'Connector' has no member 'kHTTP_METHOD_GET'
    }

}

是否有可能做到这一点?谢谢。

4

4 回答 4

2

确保你有这样的头文件......

{project-name}-Bridging-Header.h

在 Bridging-Header.h 中添加您的类文件

#import "Connector.h"

并将您的以下代码放入 Connector.h文件中。因为在 Bridging-Header.h 中只会导入头文件

NSString * const kHTTP_METHOD_GET = @"GET";

在@interface 范围之上..

于 2016-01-21T05:46:17.190 回答
1

在 Connector.h 中添加以下行。

extern NSString * const kHTTP_METHOD_GET;

将 Connector.h 包含到您的桥接头文件中。

于 2016-01-21T04:48:40.567 回答
0

我相信 Connector.m 中的方法/变量也需要公开才能正常工作。

于 2016-01-21T01:52:24.013 回答
0

这听起来像是Adapter Pattern的一个很好的用例。但是您应该能够轻松访问 Objective-C 代码。

确保您的桥接头文件的名称如下:

{your-project-name}-Bridging-Header.h

在您的桥接头中添加以下内容:

#import "Connector.m"

然后你必须确保编译器知道你的桥接头:

单击您的根项目 > 选择您的目标应用程序 > 构建设置

然后向下滚动直到你看到这个:

在此处输入图像描述

确保列出您的桥接头,构建并且您应该可以访问您的 Objective-C 代码。

于 2016-01-21T02:26:31.273 回答