Ios 在Swift应用程序中使用Obj-C子项目
我的团队有几个完整的Obj-C库,我们喜欢在项目中重用它们。为此,我们通常设置一个git子模块,然后将其作为子项目添加到xcode项目中(使用Ios 在Swift应用程序中使用Obj-C子项目,ios,xcode,swift,ios8,xcode6,Ios,Xcode,Swift,Ios8,Xcode6,我的团队有几个完整的Obj-C库,我们喜欢在项目中重用它们。为此,我们通常设置一个git子模块,然后将其作为子项目添加到xcode项目中(使用目标依赖关系,将二进制文件链接到库中,并更新用户标题搜索路径) 到目前为止,它只在完整的Obj-C项目中完成,我现在尝试在Swift项目中使用它,但迄今为止几乎没有成功。我试图添加briding头文件文件,在项目中引用它,并像这样填充它: #import "MyLibraryHeader.h" 目标标头位于用户标头搜索路径中 它允许我构建,但在我的Swi
目标依赖关系,将二进制文件链接到库中,并更新用户标题搜索路径)
到目前为止,它只在完整的Obj-C项目中完成,我现在尝试在Swift项目中使用它,但迄今为止几乎没有成功。我试图添加briding头文件
文件,在项目中引用它,并像这样填充它:
#import "MyLibraryHeader.h"
目标标头位于用户标头搜索路径中
它允许我构建,但在我的Swift文件中使用它时:
let test = MyLib();
let secondTest = MyLib.classMethod1("some_arguments");
我在secondTest
上得到一条EXC\u BAD\u指令,调试器中有以下日志:
(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'
(lldb)po测试
错误::1:1:错误:使用未解析的标识符“test”
(lldb)采购订单第二次测试
错误:自动导入时出错:
无法从AST上下文获取模块“MyProject”:
/Users/siegele/Sources/MyProject\u iOS/MyProject/Classes/MyProject桥接头。h:12:9:错误:“找不到MyLibraryHeader.h”文件
#导入“MyLibraryHeader.h”
^
未能导入桥接头“/Users/siegele/Sources/MyProject\u iOS/MyProject/Classes/MyProject桥接头.h”
发现以下问题,但没有答案:
任何帮助都将不胜感激。我遵循了HockeyApp教程,可以在这里找到:
最后,我在正确的轨道上,但弄乱了标题搜索路径:
将子项目xcodeproj添加到工作区
在主项目上:将二进制文件链接到库中
,并添加子项目产品库(奖励点:也将其添加为目标依赖项)
相应地更新标题搜索路径
(不用户标题搜索路径
)
在主项目桥接头.h
文件中导入库.h
让我有一段时间不高兴的是Objective-C桥接头的Swift编译器设置没有自动设置。检查目标的生成设置,确保“Objective-C桥接头”设置不为空 您确定MyProject桥接头.h
文件名与hour plist文件中的桥接头文件名匹配吗?是的,如果Xcode在生成设置中找不到引用的文件,则不会生成该文件。你说的是plist,但它不是我应该添加它的地方,是吗?在XCode 6.1.1中对我有用的一个次要解决方法是键入:po打印(测试)