繁体   English   中英

从Swift访问Objective-C变量/函数

[英]Accessing Objective-C variables/functions from Swift

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

连接器

NSString * const kHTTP_METHOD_GET = @"GET";

连接器

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'
    }

}

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

在Connector.h中添加以下行。

extern NSString * const kHTTP_METHOD_GET;

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

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

{project-name}-Bridging-Header.h

将您的课程文件添加到Bridging-Header.h中

#import "Connector.h"

并将下面的代码放入Connector.h文件中。由于Bridging-Header.h仅导入头文件

NSString * const kHTTP_METHOD_GET = @"GET";

到@interface范围的顶部。

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

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

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

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

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

#import "Connector.m"

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

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

然后向下滚动,直到看到以下内容:

在此处输入图片说明

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM