将Objective C框架连接到Swift iOS 8应用程序(Parse框架)

我正在尝试使用Objective-C框架和iOS 8开发的Swift编程语言。 这是一个import的具体情况,但一般问题是:

你如何将一个Objective C框架导入swift并获得导入的认可?

我试图将parsing框架整合到一个使用iOS 8和Xcode 6testing版的快速应用程序中。

Objective C中的Parse框架集成技术如下:

https://www.parse.com/apps/quickstart#social/mobile/ios/native/existing

我已经下载了Parse框架作为一个压缩的档案,提取它,并没有任何问题导入到Xcode 6。 在我的应用程序中,它以名称Parse.framework的forms显示为格式正确的框架。

我目前的思考过程是修改我的项目的根目录中的AppDelegate.swift文件。 这里是没有修改的当前文件(在Swift项目创build时由Xcode自动生成):

https://gist.github.com/fconcklin/e8ef7d8b056105a04161

我试图导入parsing通过添加行import Parse下面的行import UIKit 。 但是,Xcode发出一个警告,说没有find这样的模块,并且构build失败。

我也尝试使用import <Parse/Parse.h>创build一个文件${PROJ_NAME_HERE}-Bridging-Header.h包含目标C导入的Parse ${PROJ_NAME_HERE}-Bridging-Header.h 。 这条线不会抛出错误,但似乎最终没有任何区别。

提前致谢。 让我知道如果你需要更多的信息。

添加桥接头的“傻瓜式”方法如下:

如果你有一个Swift项目,将一个新的Objective-C文件添加到你的项目中,Xcode会提示你是否想用一个桥接头来configuration你的项目。 按是。

如果你有一个Objective-C项目,添加一个新的Swift文件 ,你会得到相同的提示。 按是。

获得桥接头后,如果需要,可以删除刚刚添加的文件。

经过进一步的研究,我find了解决scheme,并意识到我只是困惑。

正确的做法如下:

  • 通过将框架拖放到Xcode 6 Swift项目中导入您的Objective C框架。

  • 在你的项目中创build一个新的Objective C文件(File-> New-> File [Objective C for iOS])。

  • 接受提示(同意)在Objective C和Swift之间创build一个桥接头文件。

  • 删除新创build的Objective C文件,但保留桥接头文件${YOURPROJ}-Bridging-Header.h

  • 在桥接头文件中,使用标准的Objective C导入语法(例如#import <Parse/Parse.h> )导入您的框架。

  • 这放弃了在AppDelegate.swift文件中执行import Parse语句的需要。 您现在可以编写利用任何框架的代码,只要使用桥接标头导入即可。 它可以在整个项目的Swift文件中使用。

现在,如果您想要在项目中testingParse集成,可以键入Parse. 并使用代码完成来浏览框架,并看到代码完成是成功导入的指示。

但是,在使用桥接头文件时,需要解决另一个警告。 框架的所有依赖关系也需要在桥接头文件中指定。 在将Parse框架集成到Swift应用程序中的情况下,您的Bridging Header文件将如下所示:

  #import <Foundation/Foundation.h> // Parse Dependencies #import <AudioToolbox/AudioToolbox.h> #import <CFNetwork/CFNetwork.h> #import <CoreGraphics/CoreGraphics.h> #import <CoreLocation/CoreLocation.h> #import <MobileCoreServices/MobileCoreServices.h> #import <QuartzCore/QuartzCore.h> #import <Security/Security.h> #import <StoreKit/StoreKit.h> #import <SystemConfiguration/SystemConfiguration.h> // Import parse framework #import <Parse/Parse.h> 

希望这可以帮助。

将Parse框架添加到Swift项目中:将这个库文件添加到Swift项目中。

在这里输入图像说明

将这个框架从ParseSDK粘贴到你的项目中:

在这里输入图像说明

添加一个ProjectName-Bridging-Header.h( https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html )( https://stackoverflow.com/a/24272431/1847511 )文件与这样的内容。

在这里输入图像说明

添加绑定桥接头的path:

在这里输入图像说明

添加testing代码:

在这里输入图像说明

运行应用程序。

新的Parse框架版本需要一些更新。

例如,您应该在Library Binary With Libraries中插入libsqlite3.0.dylib,并使用#import和#import更新头文件

我的问题的答案是不同的。 我的项目构build设置中框架searchpath设置为recursion时,它们应该是非recursion的

在我的情况下,我的目标的框架searchpath设置为$(inheritance) ,这意味着从我的项目inheritance设置。

我的项目的框架searchpath只有一个path, $ PROJECT_DIR /../ External / ** (两个星号表示“recursionsearch此文件夹”。我的Parse.framework文件位于外部文件夹的基本级别。

改变从recursion非recursion固定的东西的path。 很奇怪…

Objective-C桥接头 ”将做到这一点。

在链接 (“ 使用与Swift和Xcode 6分析 ”)