【问题标题】:Using an Obj-C sub-project in a Swift application在 Swift 应用程序中使用 Obj-C 子项目
【发布时间】:2014-11-28 04:25:35
【问题描述】:

我的团队有一些完整的 Obj-C 库,我们希望在我们的项目中重用它们。为此,我们通常设置一个git子模块,然后将其作为子项目添加到xcode项目中(使用target dependencylink 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");

我在secondTest 上得到一个EXC_BAD_INSTRUCTION,并且调试器中的以下日志:

(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

任何帮助将不胜感激。

【问题讨论】:

  • 您确定MyProject-Bridging-Header.h 文件名与小时plist 文件中的桥接头文件名匹配吗?
  • 是的,如果 Xcode 在构建设置中找不到引用的文件,它就不会构建。你说 plist 但它不是我应该添加的地方,是吗?
  • 在 XCode 6.1.1 中对我有用的一个小解决方法是输入:po print(test)

标签: ios xcode swift ios8 xcode6


【解决方案1】:

我遵循了可以在此处找到的 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. 在主项目Bridging-Header.h文件中导入你的Library.h

【讨论】:

    【解决方案2】:

    让我感到很困惑的是,Objective-C Bridging Header 的 Swift 编译器设置没有自动设置。检查目标的构建设置并确保“Objective-C Bridging Header”设置不为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 2015-09-16
      • 1970-01-01
      相关资源
      最近更新 更多