注意:我知道How to call Objective-C code from Swift,但我不知道如下,
我是ios的新手。我想在我的项目中使用这个EsptouchForIOS's Demo。演示是在OC中编写的,它有一个故事板和控制器。我想知道如何在我的swift项目中集成演示,并在我的快速项目中使用该故事板和它的控制器。
答案 0 :(得分:11)
我会从一开始就写作。假设您有一个Objective-C项目,现在您想继续在Swift中开发项目。遵循以下准则:(这意味着您的具体需求)
首先选择从文件 - >新建 - >文件添加新文件。在此过程中,选择您的语言为 Swift 。在此处的最后一步中,系统将提示您Create Bridging Header
。选择:
现在构建您的项目一次(⌘
+ B
)。您可能会收到如下错误:
将目标的最低部署更改为 Swift 支持的版本。 (以下截图中的示例)
现在您的项目中有一个ProjectName-Bridging-Header.h
文件。如果要在Swift文件中使用任何Objective-C类,只需在该桥接头文件中包含该类的头文件即可。与此项目一样,您也有ESP_NetUtil
和ESPViewController
类及其头文件。您希望将它们暴露给Swift并稍后在Swift代码中使用它们。所以在这个桥接头文件中导入它们:
再次建造。现在你可以转到你的Swift文件了。并使用Objective-C类,就像在swift中使用任何资源一样。参见:
N.B:您必须在该桥接头文件中公开所有类标题(您打算稍后在Swift中使用)
现在你可能想知道,我已经在Swift中成功使用了Objective-C资源。对面怎么样?是!你也可以这样做。找到你的Target->Build Settings->Swift Compiler - General->Objective-C Generated Interface Header Name
。这是您将在Objective-C类中使用的头文件,用于任何Swift
到Objective-C
互操作性。要了解更多信息,请检查here。
现在在任何Objective-C类中,导入该接口头并在Objective-C代码中使用Swift资源:
您将从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项目中进行演示集成的快照并导入声明。
现在,目标C文件getValue
在swift项目/文件中使用/访问。
同样,您可以在桥中导入任意数量的文件(源标头),并在swift中使用相同的文件(源代码)。
答案 2 :(得分:2)
我从未尝试过使用swift项目中的objective-c。但我通常使用来自objective-c项目的快速类。我通常会按照Apple开发人员网站上的https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html说明进行操作。