如何在Swift中导入现有的Objective C类

时间:2014-06-04 09:59:02

标签: ios swift

我曾在XCode 6.0 DP中使用Swift一段时间,在我现有的项目中使用它。 我试图从我的ViewController.swift文件访问MyModel.h(我现有的Objective C Model对象)。我想导入

#import "MyModel.h"到我的Swift文件。 但我无法找到如何做到这一点。

3 个答案:

答案 0 :(得分:76)

如果有人帮助某个人面临同样的问题,则发布答案。

我发现在iOS Developer Library中提供了一个非常直接的解决方案。请参考以下链接:

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_75

Apple Doc说:

  

要在与您相同的应用目标中导入一组Objective-C文件   Swift代码,你依靠Objective-C桥接头来暴露它们   文件到Swift。 Xcode提供在添加时创建此头文件   Swift文件到现有的Objective-C应用程序,或者Objective-C文件到   现有的Swift应用程序。

所以我创建了MyApp-Bridging-Header.h文件并添加了以下行:

#import "MyModel.h"

现在它允许我在我的ViewController.swift中使用模型,如下所示:

var myModel = MyModel()
myModel.name = "My name"
myModel.dobString = "11 March,2013"
println ("my model values: Name: \myModel.name and dob: \myModel.dobString")

对于那些想要解决这个问题的人来说。如果必须从头开始创建桥接文件,还必须在Build Settings>中指定它的路径。 Swift编译器> Objective-C Bridging Header。

答案 1 :(得分:16)

Document said in to swift programming中没有导入声明。

enter image description here

答案 2 :(得分:6)

要导入Swift应用程序或创建混合语言应用程序的Objective C应用程序,您需要创建一个桥接标题,您可以参考Apple Docs

它说

  

Objective-C和Swift文件可以在一个项目中共存,无论项目最初是Objective-C还是Swift项目。您只需将另一种语言的文件直接添加到现有项目即可。这种自然的工作流程使创建混合语言应用程序和框架目标与创建用单一语言编写的应用程序或框架目标一样简单。

     

要在与Swift代码相同的应用程序目标中导入一组Objective-C文件,您需要使用Objective-C桥接标头将这些文件公开给Swift。当您将Swift文件添加到现有的Objective-C应用程序或将Objective-C文件添加到现有的Swift应用程序时,Xcode可以创建此头文件。

编辑: 我已经为您的帮助创建了一个代码,您可以找到它here