我的团队有一些完整的Obj-C库,我们喜欢在我们的项目中重用。为此,我们通常设置一个git子模块,然后将其作为子项目添加到xcode项目中(使用target dependency
,link binary with library
并更新User Header Search Paths
)
到目前为止,它只在完整的Obj-C项目中完成,我现在尝试在Swift项目中使用它,但到目前为止收效甚微。我尝试添加briding-header
文件,在项目中引用它并填充它:
#import "MyLibraryHeader.h"
目标标题位于User Header Search Paths
。
它允许我构建,但在我的Swift文件中使用它时:
let test = MyLib();
let secondTest = MyLib.classMethod1("some_arguments");
我在EXC_BAD_INSTRUCTION
上获得secondTest
,以及调试器中的以下日志:
(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'
找到以下问题但没有回答:Xcode 6 crashing when using Objective-C subproject inside Swift
任何帮助都将不胜感激。
答案 0 :(得分:7)
我按照HockeyApp教程可以在这里找到: http://support.hockeyapp.net/kb/client-integration-ios-mac-os-x/integrate-hockeyapp-for-ios-as-a-subproject
最后,我在正确的轨道上,但搞砸了标题搜索路径:
Link binary with library
,并添加子项目产品库(奖励点:也将其添加为目标依赖项)Header Search Paths
(不 User Header Search Paths
Library.h
文件Bridging-Header.h
醇>
答案 1 :(得分:0)
让我失望的是,Objective-C Bridging Header的Swift Compiler设置没有自动设置。检查目标的构建设置,确保“Objective-C Bridging Header”设置不为空。