如何在我的Swift项目中使用Objective-C项目

时间:2017-08-04 08:06:50

标签: objective-c swift xcode uiviewcontroller storyboard

注意:我知道How to call Objective-C code from Swift,但我不知道如下,

我是ios的新手。我想在我的项目中使用这个EsptouchForIOS's Demo。演示是在OC中编写的,它有一个故事板和控制器。我想知道如何在我的swift项目中集成演示,并在我的快速项目中使用该故事板和它的控制器。

3 个答案:

答案 0 :(得分:11)

我会从一开始就写作。假设您有一个Objective-C项目,现在您想继续在Swift中开发项目。遵循以下准则:(这意味着您的具体需求)

首先选择从文件 - >新建 - >文件添加新文件。在此过程中,选择您的语言为 Swift 。在此处的最后一步中,系统将提示您Create Bridging Header。选择:

Bridging Header creation

现在构建您的项目一次( + B)。您可能会收到如下错误:

iOS SDK version error message

将目标的最低部署更改为 Swift 支持的版本。 (以下截图中的示例) Changing deployment target

在Swift文件中使用Objective-C资源:

现在您的项目中有一个ProjectName-Bridging-Header.h文件。如果要在Swift文件中使用任何Objective-C类,只需在该桥接头文件中包含该类的头文件即可。与此项目一样,您也有ESP_NetUtilESPViewController类及其头文件。您希望将它们暴露给Swift并稍后在Swift代码中使用它们。所以在这个桥接头文件中导入它们:

Importing Objective-C header files in Bridging Header

再次建造。现在你可以转到你的Swift文件了。并使用Objective-C类,就像在swift中使用任何资源一样。参见:

Objective-C classes used in Swift

  

N.B:您必须在该桥接头文件中公开所有类标题(您打算稍后在Swift中使用)

在Objective-C文件中使用Swift资源:

现在你可能想知道,我已经在Swift中成功使用了Objective-C资源。对面怎么样?是!你也可以这样做。找到你的Target->Build Settings->Swift Compiler - General->Objective-C Generated Interface Header Name。这是您将在Objective-C类中使用的头文件,用于任何SwiftObjective-C互操作性。要了解更多信息,请检查here

Objective-C Generated Interface Header Name

现在在任何Objective-C类中,导入该接口头并在Objective-C代码中使用Swift资源:

Import and using Swift resource in Objective-C

您将从official apple documentation获得更多了解。

  

您可以使用Objective-C - Swift互操作性检查已关联项目here的已制定版本。

答案 1 :(得分:2)

因此,根据您的问题,您使用How to call Objective-C code from Swift在swift项目中添加了一个客观的C桥。

现在,导入要在swift文件中直接使用的objective-c源代码(演示项目)的所有头文件(.h)。

例如,您的演示项目在项目源代码中的标题(扩展名为.h的文件)后面有EsptouchForIOS

ESPAppDelegate.h, ESPDataCode.h, ESPTouchDelegate.h

导入桥中的头文件,您希望在swift代码中使用该头文件。假设你的swift代码中你需要触摸委托ESPTouchDelegate然后写,

#import "ESPTouchDelegate.h"

以下是使用bridge

在我的Test Swift项目中进行演示集成的快照

enter image description here

并导入声明。

enter image description here

现在,目标C文件getValue

中有功能/方法

enter image description here

在swift项目/文件中使用/访问。

enter image description here

同样,您可以在桥中导入任意数量的文件(源标头),并在swift中使用相同的文件(源代码)。

答案 2 :(得分:2)

我从未尝试过使用swift项目中的objective-c。但我通常使用来自objective-c项目的快速类。我通常会按照Apple开发人员网站上的https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html说明进行操作。