在Swift应用程序中使用Obj-C子项目

Ner*_*tel 5 xcode ios swift xcode6 ios8

我的团队有一些完整的Obj-C库,我们喜欢在我们的项目中重用.要做到这一点,我们通常设立一个Git子模块,然后将其添加到Xcode项目作为子项目(使用target dependency,link binary with library并更新User Header Search Paths)

到目前为止,它只在完整的Obj-C项目中完成,我现在正尝试在Swift项目中使用它,但迄今为止收效甚微.我试图添加briding-header文件,在项目中引用它并填充它如下:

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

目标标题位于User Header Search Paths.

它让我构建,但在我的Swift文件中使用它时:

    let test = MyLib();
    let secondTest = MyLib.classMethod1("some_arguments");
Run Code Online (Sandbox Code Playgroud)

我得到一个EXC_BAD_INSTRUCTIONsecondTest,并在调试以下日志:

(lldb) po test
error: <EXPR>:1:1: error: use of unresolved identifier 'test'

(lldb) po secondTest
error: Error in auto-import:
failed to get module 'MyProject' from AST context:
/Users/siegele/Sources/MyProject_iOS/MyProject/Classes/MyProject-Bridging-Header.h:12:9: error: 'MyLibraryHeader.h' file not found
#import "MyLibraryHeader.h"
        ^
failed to import bridging header '/Users/siegele/Sources/MyProject_iOS/MyProject/Classes/MyProject-Bridging-Header.h'
Run Code Online (Sandbox Code Playgroud)

发现以下问题没有答案:在Swift中使用Objective-C子项目时Xcode 6崩溃

任何帮助,将不胜感激.

Ner*_*tel 7

我按照可以在这里找到的HockeyApp教程:http: //support.hockeyapp.net/kb/client-integration-ios-mac-os-x/integrate-hockeyapp-for-ios-as-a-subproject

最后,我在正确的轨道上,但搞砸了标题搜索路径:

  1. 将子项目xcodeproj添加到工作区
  2. 在主项目上:Link binary with library,并添加子项目产品库(奖励点:也将其添加为目标依赖项)
  3. 相应地更新Header Search Paths( User Header Search Paths)
  4. 导入您Library.h的主项目Bridging-Header.h文件