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

sha*_*988 61 ios swift

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

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

sha*_*988 79

发布答案,如果它有助于某人面临同样的问题.

我发现在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说:

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

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

#import "MyModel.h"
Run Code Online (Sandbox Code Playgroud)

现在它让我在我的模型中使用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")
Run Code Online (Sandbox Code Playgroud)

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

  • 如果我的模型不变,你如何改变它? (2认同)
  • 我对我的Apple Watch Extension(在Swift中)做了这个,但是当我尝试使用它时,我得到了一个"声称不足的类型".不适合我(我的主要应用程序在Obj-C) (2认同)

iPa*_*tel 17

Document中说swift编程没有import语句.

在此输入图像描述

  • "无导入语句"消息用于将Swift代码导入Swift代码.OP询问如何将Obj-C代码导入Swift代码; 这个表明确指出要这样做,你需要一个桥接头. (6认同)

Roh*_*hit 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可以创建此头文件.

编辑:我已经创建了一个代码,您可以在这里找到它